【问题标题】:disable button until input and file fields have got value禁用按钮,直到输入和文件字段获得值
【发布时间】:2013-04-13 10:39:06
【问题描述】:

我这里有一个表格:

<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>

我想禁用提交按钮,直到所有字段(包括下拉菜单)都被填写或选择。

我的代码是:

$(document).ready(
 function() {
                $('form > input').keyup && $('input:file').change(function() {
                  var empty = false;
                  $('form > input').each(function() {
                   if ($(this).val() == '') {
                   empty = true;
                   }
                   });

                    if (empty) {
                  $('#submit').attr('disabled', 'disabled');
                  } else {
                 $('#submit').removeAttr('disabled');
                  }
                   });
                  };
function(){
    $('input:file').change(
        function(){
            if ($(this).val()) {
                $('input:submit').attr('disabled',false); 
            } 
        }
        );
});

当输入有一些文本,下拉有一个值并且输入类型有一个文件被选择时,请帮助激活按钮。

我的小提琴在这里:http://jsfiddle.net/E42XA/214/

谢谢。

【问题讨论】:

  • 在提交时验证不是更容易吗?
  • 你能帮我看看怎么做吗?对不起,我是 jquery 的疯子......

标签: jquery forms


【解决方案1】:

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

<input id='mySUBMIT' type="button" value="submit"/>

Safari 选择第一个 &lt;option&gt; 而不实际单击一个,所以我也将添加为第一个:&lt;option value=""&gt;&lt;/option&gt;

JS:

$('#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(); }
});

UPDATED FIDDLE

【讨论】:

  • 谢谢 shaun5。您能否将您的代码添加到我的 jsfiddle 中。它似乎无法正常工作。
【解决方案2】:
$("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");
  }
});

【讨论】:

  • 嗨,Amelle,谢谢。我已将您的代码放到 jsfiddle 中,但它仍然使按钮处于禁用状态;-(您能看看:jsfiddle.net/E42XA/217
  • @qqruza 你好!我已经更新了我的答案。 JSFiddle 似乎不支持.prop() 方法(我猜)所以我只是将其更改为.attr()。你能再试一次吗?
  • 我意识到 select=> 选项禁用(不可选择的字段)。但是我需要的已经实现了。非常感谢阿内尔。
猜你喜欢
  • 2013-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-02
  • 2022-01-01
  • 1970-01-01
相关资源
最近更新 更多