3

我正在使用这个 javascript 来禁用我的表单提交按钮,直到用户在 textarea 字段中输入。一旦填充了文本区域,提交按钮就不再被禁用。

然而,虽然这适用于单个文本区域,但我现在想找到一种方法来完成这项工作,这样如果我有四个文本输入字段,那么保持禁用提交按钮,直到它们都不是空的/没有填充文本。

这是我目前使用的内容:

<form action=\"includes/welcomestats.php\" method=\"post\" id=\"form1\" onSubmit=\"if (this.display_name.value == '') {return false;}\">
<input type=\"text\" name=\"display_name\" id=\"display_name\" maxlength=\"30\" placeholder=\"Display Name\">
<input type=\"submit\" class=\"welcome-submit2\" name=\"submit\" value=\"Next ->\" id=\"submit\"/>
</form>

    <script>
    $(function(){

        $("#submit").submit(function(e){

          if($("#display_name").val()==""))
          {      
            e.preventDefault();
           }
        });        

    });
    </script>

但是现在我在表单中添加了更多的文本输入字段,所以我需要脚本来禁用我的提交按钮,直到所有文本字段都被填充,有人可以帮我吗?

我想将这些文本字段添加到我的表单中:

<input type=\"text\" name=\"public_email\" id=\"public_email\" maxlength=\"50\" placeholder=\"Email Address\">

<input type=\"text\" name=\"phone\" id=\"phone\" maxlength=\"30\" placeholder=\"Phone Number\">

<input type=\"text\" name=\"age\" id=\"age\" maxlength=\"2\" placeholder=\"Display Age\">
4

6 回答 6

3

您可以使用.filter方法获取所有空输入元素,然后检查长度。

if ($('#form1 input').filter(function(){return $(this).val().length == 0;}).length > 0) {
  e.preventDefault();
}
于 2013-04-30T10:50:45.390 回答
3

尝试使用:

<script>
$(function(){

    $('form input').each(function(){
        if($(this).is(':empty')){
           $('form #submit').preventDefault();
        }
    });    

});
</script>
于 2013-04-30T10:51:09.397 回答
3

使用这个:http: //jsfiddle.net/qKG5F/641/

<input type="submit" id="register" value="Register" disabled="disabled" />

(function() {
$('form > input').keyup(function() {

    var empty = false;
    $('form > input').each(function() {
        if ($(this).val() == '') {
            empty = true;
        }
    });

    if (empty) {
        $('#register').attr('disabled', 'disabled'); // updated according to http://stackoverflow.com/questions/7637790/how-to-remove-disabled-attribute-with-jquery-ie
    } else {
        $('#register').removeAttr('disabled'); // updated according to http://stackoverflow.com/questions/7637790/how-to-remove-disabled-attribute-with-jquery-ie
    }
});
})()
于 2013-04-30T10:51:27.500 回答
0

试试这个功能:

function checkInputs(form) {
  var inputs, all, 
      status = true;

  if (form && form instanceof jQuery && form.length) {
    inputs = form.find("input[type=text]");

    all = inputs.length;

    while (all--) {
      if (!inputs[all].value) {
        status = false;        

        break;
      }
    }

    return status;
  }
}

并在这里演示:http: //jsbin.com/afukir/1/edit

编辑:我已添加instanceof以确保仅当表单实际上是 jQuery 对象时此函数才会继续。

于 2013-04-30T11:02:54.557 回答
0

您将需要 OR 运算符 -||

所以如果display_name是空的或者public_email是空的等等......

$(function(){

    $("#submit").submit(function(e){

      if($("#display_name").val()=="" || $("#public_email").val()=="" || $("#phone").val()=="" || $("#age").val()=="")
      {      
        e.preventDefault();
       }
    });        

});
于 2013-04-30T10:52:17.177 回答
0

给你想在这个验证中包含的所有文本字段一个类class="required"或类似的东西,然后你可以这样做

var empty = $('.required').filter(function(){ return $(this).val() == "" }).length;
if(empty === 0){
   //Enable your submit button all text fields have a value
}
于 2013-04-30T10:52:47.613 回答