jQuery Validation Plugin Checkbox errorPlacement

时间:2009-07-06 20:10:54

标签: jquery validation checkbox errorplacement

我有一组所有名称相同的复选框。他们都有不同的价值观。它们只是表格的一部分。它们不构成整个表格。我希望复选框在该组的最后一个复选框之后显示错误。

可以在jQuery中做这样的事情吗?

$("#myform").validate({
  errorPlacement: function(error, element) {
     var checkboxes = $("#checkboxes");
     if(checkboxes.contains(element))
        label.insertAfter(checkboxes[checkboxes.length-1]);
   },
   debug:true
 })

我将如何做到这一点?

谢谢,
伊恩麦卡洛

4 个答案:

答案 0 :(得分:2)

我意识到这是一个较旧的问题但是,我需要在表单上使用类似的功能并解决它。

使用jQuery 1.4.2

所以给出以下表格。

<form id="checkForm" method="get" action="">
<ul id="checkboxes">
    <li><input type="checkbox" name="checkOne" id="checkOne" value="1" /></li>
    <li><input type="checkbox" name="checkTwo" id="checkTwo" value="2" /></li>
    <li><input type="checkbox" name="checkThree" id="checkThree" value="3" /></li>
</ul>
<input class="submit" type="submit" value="Submit"/>

然后你可以做以下

$("#checkForm").validate({
    rules: {
        checkOne: "required",
        checkTwo: "required",
        checkThree: "required"
    },
    errorPlacement: function(error, element) {
        if ($("#checkboxes").has(element).size() > 0) {
            error.insertAfter($("#checkboxes input:checkbox:last"));
        } else {
            error.insertAfter(element);
        }
    }
});

答案 1 :(得分:1)

这是一个通用的解决方案,可以与页面上的所有复选框一起使用。它将在组的最后一个复选框后插入错误消息。

$('form').validate({
    rules: {
        checkbox_group_1: {
            required: true
        },
        checkbox_group_2: {
            required: true,
        }
    },
    errorPlacement: function(error, element) {
        if (element.is(':checkbox'))
            error.insertAfter($('input[name=' + element.attr('name') + ']').last());
        else
            error.insertAfter(element);
    }
});

答案 2 :(得分:0)

你能不能做到

if(checkboxes.contains(element)) {
  checkboxes.after(label);
}

答案 3 :(得分:0)

您的代码中的变量'label'是什么?

你不应该使用'error'变量吗?

error.insertAfter(checkboxes[checkboxes.length-1]);