Jquery 禁用按钮,直到输入和文件字段获得值

Jquery 禁用按钮,直到输入和文件字段获得值,jquery,forms,Jquery,Forms,我这里有一张表格: <form action="#" method="post"> Text: <input type="type" name="text" id="text" /><br /> File: <input type="file" name="fileInput" id="fileInput" /><br /> <select name="cars"> <option value="volvo">1

我这里有一张表格:

<form action="#" method="post">
Text: <input type="type" name="text" id="text" /><br />
File: <input type="file" name="fileInput" id="fileInput" /><br />
<select name="cars">
<option value="volvo">1</option>
<option value="saab">2</option>
<option value="mercedes">3</option>
<option value="audi">4</option>
</select><br />
<input type="submit" value="submit" disabled />
</form>
<div id="result"></div>
当输入得到一些文本时,请帮助激活按钮,下拉列表有一个值,输入类型有一个选定的文件

我的小提琴在这里:


谢谢。

我只在必要时验证(并警告为什么禁用):

$("form > *").change(function() {
  var fields = $("form input, form select").not("input[type='submit']");
  var filledFields = fields.filter(function() {
    return $(this).val().length > 0;
  });
  if (filledFields.length == fields.length) {
    $("input[type='submit']").removeAttr("disabled");
  } else {
    $("input[type='submit']").attr("disabled", "disabled");
  }
});

提交时验证不是更容易吗?您能帮我怎么做吗?我是jquery的一个疯子对不起…你好,阿梅勒,谢谢你。我已经把你的代码放到了JSFIDLE上,它仍然使按钮处于禁用状态-(你能看一看:@qqruza Hi!我已经更新了我的答案。看来JSFIDLE中不支持
.prop()
方法(我猜),所以我只是将其更改为
.attr()
。你能再试一次吗?我意识到select=>选项已禁用(不可选择的字段).但是我需要的已经实现了。非常感谢Arnelle。谢谢shaun5。你能把你的代码添加到我的JSFIDLE中吗?它似乎工作不正常。
$("form > *").change(function() {
  var fields = $("form input, form select").not("input[type='submit']");
  var filledFields = fields.filter(function() {
    return $(this).val().length > 0;
  });
  if (filledFields.length == fields.length) {
    $("input[type='submit']").removeAttr("disabled");
  } else {
    $("input[type='submit']").attr("disabled", "disabled");
  }
});
<input id='mySUBMIT' type="button" value="submit"/>
$('#mySUBMIT').bind('click', function() {
    var blanks = $('form').find('select,input:not(:button)').filter(function () {
         return ($(this).val() == '');
    });
    if (blanks && blanks.length > 0) { alert("All fields MUST be filled out/selected!"); }
    else { $("form").submit(); }
});