jQuery检查空字段不';不要检查所有字段

jQuery检查空字段不';不要检查所有字段,jquery,field,Jquery,Field,例如,我使用下面的脚本检查空字段: $('a.submit').click(function() { if ($('.LoginData').val() == "") { $('input:text[value=""]').attr('style', 'border-color:#FF0000;'); } else { $(this).parents('form').submit(); } }); 所有输入元素都有LoginData类,因此我使用jQuery类选择器来选择包含该

例如,我使用下面的脚本检查空字段:

$('a.submit').click(function() {
 if ($('.LoginData').val() == "")  {
  $('input:text[value=""]').attr('style', 'border-color:#FF0000;');
 } else {
  $(this).parents('form').submit();
 }
});
所有输入元素都有LoginData类,因此我使用jQuery类选择器来选择包含该类的所有元素。但是,当if条件发现一个字段不是空的时候,它就停在那里

我认为这是if语句的正常行为,有没有其他替代方法

谢谢。

“.val()”只有一个返回值——它只能给您一个元素的值;该元素将是$()集合中的第一个元素

$('a.submit').click(function() 
{
  var ok = true;
   $('.LoginData').each(function() 
   {  
       if($(this).val() == "")  
       { 
              $(this).attr('style', 'border-color:#FF0000;'); 
              ok = false;
       }
   }
   if (ok)
   {
      $(this).parents('form').submit(); 
   } 
});

您的代码当前只查看第一个元素。您需要与支票一起使用,以确保支票按计划进行

此外,如果字段不为空,处于当前状态的循环将立即提交表单

val()
只返回第一个匹配元素的值,因此不能用它来验证表单是否已填写

您需要使用
jQuery.each()
方法对“.loginda”项进行迭代


一个好的解决方案是使用
each
方法,将一个类附加到空元素上(类似于
validate empty
)。这可用于将样式附加到元素,以向用户显示所需的样式(就像上面所做的,但使用已定义的类)。然后,您可以检查表单,例如
$(“#我的表单.验证为空”).size()==0
,以查看在提交之前是否存在错误。

您需要使用我注意到这在Chrome中不起作用(它总是提交表单),因此您需要添加:

  event.preventDefault();
像这样:

$('a.submit').click(function() 
{
  event.preventDefault();
  var ok = true;
   $('.LoginData').each(function() 
   {  
       if($(this).val() == "")  
       { 
              $(this).attr('style', 'border-color:#FF0000;'); 
              ok = false;
       }
   }
   if (ok)
   {
      $(this).parents('form').submit(); 
   } 
});

为什么要使用
。单击()
开始?如果您想使用jQuery提交表单,我建议您使用
.submit()
(有关
.submit()
的更多信息,请阅读jQuery文档)。正如其他用户所说,您可以使用
.each()
函数迭代所有输入字段。我会这样做:

$("#form").submit(function(event){
        $(".classForAllInput").each(function(index) {
          if ($(this).val() == 0) {
              $("#error").css({"display": "inline"}).text("Some of the fields are empty");
              event.preventDefault();
          }
        });
    });

jQuery函数
.each()
将迭代所有输入字段,如果其中任何一个字段为空,则将显示错误消息(前提是您有一个显示错误ID的区域)

这里是另一种方法。此外,该表单不会在chrome上提交,因此在没有立即使用prevent.default的情况下,它不会按照别人的描述进行操作

<script type="text/javascript">
    $('#ctl00_PlaceHolderMain_changeRequestbtnSave').click(function (e) {
        var valid = true;
        //check all inputs within a parent div)
        $('.requiredfield input').each(function () {
            //check if values is null
            if ($(this).val() == "") {
                $(this).addClass('requiredflag');
                valid = false;
            }
        })
        if(!valid) {
            e.preventDefault();
        }
    });
</script>

$(“#ctl00_占位符main_changeRequestbtnSave”)。单击(函数(e){
var valid=true;
//检查父div中的所有输入)
$('.requiredfield输入')。每个(函数(){
//检查值是否为空
if($(this).val()==“”){
$(this.addClass('requiredflag');
有效=错误;
}
})
如果(!有效){
e、 预防默认值();
}
});
请记住,如果您没有使用document.ready,则这需要放在html的最底部

我的风格如下:

<style>
.requiredflag {
    border: 1px solid red;
}
.requiredfield:after {
    content: "*";
    font-weight: bold;
    color: red;
}
</style>

.requiredflag{
边框:1px纯红;
}
.requiredfield:之后{
内容:“*”;
字体大小:粗体;
颜色:红色;
}

我不是专家,但我认为您忘记了在函数调用(在第一行)中包含“事件”处理程序,如:$('a.submit')。单击(函数(事件)