【问题标题】:Check if every elemnt from a form is filled JQUERY检查表单中的每个元素是否都已填写 JQUERY
【发布时间】:2015-01-15 18:31:33
【问题描述】:

我有一个包含所有类型的表单元素的表单,并且我有一个代码应该贯穿每个元素,并在单击提交按钮后检查它们的值。不幸的是,这段代码不能完全工作。我的意思是,如果我没有在输入中输入任何值,它会打印消息,但如果我在其中输入一些文本,我们会转到 else 语句,而不检查其他语句。

谁能告诉我为什么?

if($('form.registration-form :input').val() == '')
    {
        // Print Error Message
    }
else
    {
        // Do something else
    }

【问题讨论】:

  • trim() 也一样,可能有人输入了空格,算作空白字符
  • $('form.registration-form :input') 返回所有表单控件,但添加 .val() 仅返回集合中第一个的值。

标签: javascript jquery html forms input


【解决方案1】:

您可以为此使用filter 方法:

var emptyElements = $('form.registration-form :input').filter( function() {
    return this.value === '';
});

if( emptyElements.length === 0 ) {
  // all IS filled in
} else {
  // all is NOT filled in
}

$('#submit').click(function(){
    var emptyElements = $('form.registration-form :input').filter( function() {
        return this.value === '';
    });
    
    if( emptyElements.length === 0 ) {
        alert('All Filled');
    } else {
        alert('1 or more not filled')
    }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form action="" class="registration-form">
    <input type="text">
    <input type="text">
    <input type="text">
    <input type="text">
    <input type="submit" id="submit" value="Check">
</form>

【讨论】:

  • 我会进行 2 次调整。 1:将$( this ).val() != '';更改为this.value != '';。 2:我会让它this.value === ''; 然后if(notEmpty.length === 0)。它消除了创建其他 jQuery 对象的需要。请注意,我也会更改为 var name,因为它没有任何意义。无论如何 +1。
  • @Karl-AndréGagnon 谢谢你的建议,我已经更新了我的答案。
  • 哦,谢谢。你节省了我很多时间在网上搜索。 :)
  • @Karl-AndréGagnon 是的,你是对的!谢谢。再次更新。现在好多了
  • 在这里,我做了一个小提琴,如果你愿意,你可以把它整合到你的答案中:jsfiddle.net/91pqmn0h/1
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-28
  • 2011-08-24
  • 2015-11-19
  • 1970-01-01
  • 2015-07-18
  • 1970-01-01
相关资源
最近更新 更多