javascript - 循环输入字段时设置标志

标签 javascript jquery

我有一系列多个文本字段和一个文本区域。我循环遍历文本字段和文本区域并检查是否有值。如果没有值,我会设置一个标记,表示 pass=false。 否则,我会设置 pass=true,并希望在所有结果都为 true 时触发自定义事件。问题在于,由于一个输入字段的计算结果为 true,所以即使其中两个字段没有值,它也会将所有字段计算为 true。如果我想要这样,所有字段都必须填写,但如果填写其中一两个字段,但仍然设置 pass=false ,我该怎么做?非常感谢任何帮助!

JS fiddle 链接: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'); }
});                    
});

最佳答案

改变

pass = true;

进入

pass = pass && true;

并将其初始化为true:

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

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

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

关于javascript - 循环输入字段时设置标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23482621/

相关文章:

javascript - 为什么我的变量在 VS Code 中被划掉了?

php - UPDATE 反射(reflect)在 DB 但不是 SELECT 查询

javascript - 停止重新加载 ajax 提交的表单

javascript - 模式对话框中的 Jquery 问题

jquery - 鼠标悬停和 addClass jQuery 示例

javascript - 在 React 中单击两个元素之间切换 className

javascript - empty().append() 附加循环中的最后一项

javascript - 如何在按下 'up' 或 'down' 箭头键时让 Fancybox 切换到下一个或上一个画廊?

javascript - 为什么我没有得到列表angularJS中的任何元素

JQuery nth Child div 子级