循环输入字段时设置标志

时间:2014-05-05 22:00:55

标签: javascript jquery

我有一系列多个文本字段和一个文本区域。我循环遍历文本字段和文本区域并检查是否有值。如果没有值,我设置一个标记 pass = false。否则我设置 pass = true ,如果一切评估为true,则想要触发自定义事件。问题是因为一个输入字段的计算结果为true,所以即使两个字段中没有值,它也会将它们全部计算为true。如果我想要这样做以便所有字段必须填写但如果填写了其中一个或两个仍然设置 pass = false ,我将如何进行此操作?非常感谢任何帮助!

JS小提琴链接:http://jsfiddle.net/YyAjp/12/

HTML:

<form name="headerForm">
  <label for="fname">*First Name</label>
  <input type="text" class="text" id="fname" name="fname" />
  <br/>   

  <label for="mname">*Middle Name</label>
  <input type="text" class="text" id="mname" name="mname" />
  <br/>     

  <label for="fname">*Last Name</label>
  <input type="text" class="text" id="lname" name="lname" />
  <br/>    

  <label for="notes">*Notes</label>
  <textarea name="notes" /></textarea>

  <a href="#" id="submit">Submit</a>
</form>   

JQUERY

$(document).ready(function() {       
$("#submit").on('click', function() {    
    var pass;
    $("input,textarea,select").each(function() {
        if($(this).val() === ''){
            pass = false;
            $(this).prev('label').css('color','red');
        } else { 
            pass = true;
            $(this).prev('label').css('color','black');
        }
    });
    console.log(pass);
    if(pass){ alert('trigger custom event') } else { alert('pass failed'); }
});                    
});

1 个答案:

答案 0 :(得分:1)

更改

pass = true;

pass = pass && true;

并将其初始化为true

$("#submit").on('click', function() {    
    var pass = true;

http://jsfiddle.net/mblase75/pgM5X/

(您可能还希望首先对值使用$.trim()。)