0

我正在尝试使用 javascript 对象值进行一些简单的表单验证。我知道这不是“理想的”,但我只是在使用一种不需要铁定的简单形式。

请看我的小提琴示例:http: //jsfiddle.net/6dXd7/3/

我试图确保每个表单字段都有一个值。如果是这样,请将 的值设置myObj.fieldIDyes

然后,当提交表单时,检查每个现有的myObj.XXX并确保它们的所有值都是yes.

在我的示例中,我在创建对象时遇到了麻烦,并且我不知道在按下提交按钮时如何循环遍历所有对象而不指定每个对象的名称。

这是上面链接到的 jsfiddle 示例中的代码:

<script>
$(document).ready(function () {
    var myObj = {};
    $("input.checkblank").blur(function () {
        var inputID = $(this).attr("id");
        var contents = $("input#" + inputID).val();
        if (contents == "") {
            $(myObj).data(inputID, "no");
        } else {
            $(myObj).data(inputID, "yes");
        }
    });
    $("#verify").click(function () {
        if (myObj.first && myObj.second == "yes") {
            // ***** Trying to get it to scan through ALL existing myObj's and make sure all their values are "yes" *****        
            $('.results').text('all good');
        } else {
            $('.results').text('not good');
        }
    });
});
</script>

<input type="text" name="first" id="first" class="checkblank"><br />
<input type="text" name="second" id="second" class="checkblank">
<a href="#" id="verify">check</a><br />
<p class="results"> </p>

​ ​</p>

4

2 回答 2

1

您将字段信息存储在 jQuery DATA 中,并尝试稍后检查它们,而不是在同一个地方...

var obj = {}
$(obj).data('a','1');
console.log(obj.a); //this will log null, cause there's no attribute 'a' in 'obj'
console.log($(obj).data('a')); //this will log '1' :]

相反,您应该将数据存储在本机对象的属性中,如下所示:

var obj = {}
obj['a'] = '1'; //obj.a = '1' work's too
console.log(obj.a); //now it log '1' :]

另外,您的验证功能是错误的..它只检查first内部是否存在myObj以及是否second存在并且等于"yes"。所以你的验证功能应该是这样的:

$("#verify").click(function() {
    var allFieldsOK = false;
    for ( var field in checkedFields ) {
        if ( !(allFieldsOK = checkedFields[field] ) ) break;
    }
    $('.results').text(  allFieldsOK ? 'all good' : 'not good' );
});

这是对您的 jsFiddle 的更新,它适用于您的目的,如果您在该类中添加更多输入字段,它应该可以工作checkblank:] http://jsfiddle.net/6dXd7/5/

于 2012-04-11T17:50:22.350 回答
0

替换这个

$("#verify").click(.........});

有了这个

$("#verify").click(function() {
    var flag=true;
    $('.checkblank').each(function(){    //check all elements with class checkblank
         if($(this).val().length==0)     //set flag false if anyone of them is blank
            flag=false;                 
    })
    if (flag)  {
            $('.results').text('all good');       
        } else {  
            $('.results').text('not good');
        } 
});

...它应该工作

于 2012-04-11T17:50:45.267 回答