【问题标题】:jquery access to checkbox in existing functionjquery访问现有函数中的复选框
【发布时间】:2012-03-18 20:43:30
【问题描述】:

我继承了一些代码,其中包含一些 jquery 表单验证。我必须在页面中添加一个复选框,并想使用现有代码来验证它,但我不确定如何在此函数中引用该复选框。

function initValidation() {
    $('.validate-form').each(function(){
        var form = $(this);
        var successFlag = true;
            // Added the input:checkbox
        var inputs = form.find('input:text, input:password, input:checkbox, textarea, select');

        function validateForm() {
            successFlag = true;

            inputs.each(checkField)

            if(!successFlag) {
                return false;
            }
        }

        // check field
        function checkField(i, obj) {
            var currentObject = $(obj);
            var currentParent = currentObject.parents('div.row');

            // not empty fields
            if(currentObject.hasClass('required')) {
                setState(currentParent, currentObject, !currentObject.val().length)
            }            
        }
        // setState stuff
    })
}   

然后我将复选框设置为“class=required-checkbox”并尝试添加

        if(currentObject.hasClass('required-checkbox')) {
            setState(currentParent, currentObject, currentObject.checked == FALSE);
        }           

没用,我也试过了

        if(currentObject.hasClass('required-checkbox')) {
            setState(currentParent, currentObject, currentObject(0).checked == FALSE);
        }           

        if(currentObject.hasClass('required-checkbox')) {
            setState(currentParent, currentObject, currentObject[0].checked == FALSE);
        }   

显然这些都不对。有人可以告诉我如何检查该复选框吗?我只需要知道它是否被检查过。

TIA!

【问题讨论】:

  • 请开始投票并接受更多答案,否则您将开始注意到问题答案的质量和数量严重下降。

标签: jquery validation checkbox


【解决方案1】:

如果我的理解正确,这些可能会有所帮助:

// If it's a checkbox and has the class "required"
if(currentObject.attr("type") == "checkbox" && currentObject.hasClass("required"))

要么

    // Returns true/false if it's checked or not.
    currentObject.is(":checked");

或者

    // Check it.
    currentObject.attr("checked", "checked");

或者

    // Uncheck it.
    currentObject.removeAttr("checked");

【讨论】:

  • 谢谢!这正是我想要的!
【解决方案2】:

修改为...

if (currentObject.hasClass('required')) {
    setState(
            currentParent,
            currentObject, 
            currentObject.is(':checkbox') ? ! currentObject.prop('checked')
                                          : ! currentObject.val().length
            )
}  

然后只需将required 类添加到复选框input 元素。

【讨论】:

    猜你喜欢
    • 2012-05-26
    • 1970-01-01
    • 2018-03-23
    • 2011-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多