10

我正在尝试使用多个复选框,并确保使用 jQuery 验证检查这些复选框中的至少一个。到目前为止,我还没有运气。我错过了什么?我知道我的验证在那里,因为它适用于其他字段,但不适用于我的复选框。我把代码放在jfiddle上,也许这会有所帮助。

编辑:我为输入名称=列表参数(列表 [])添加了括号。同样在我的规则中,我将名称参数从列表更改为“列表 []”。我的旧代码如下。谢谢斯帕奇!

OLD: <input type='checkbox' name='list' id='fullProduct'></input>

FIXED: <input type='checkbox' name='list[]' id='fullProduct'></input>

这是我的代码。

$("#tradeForm").validate({
        rules: {
            startDate: {
                required: true,
                date: true
            },
            endDate: {
                required: true,
                date: true
            },
            showName: {
                required: true,
                minlength: 5
            },
            location: {
                required: true
            },
            list: {
                required: true
            }
        },
        messages: {
            startDate: "*",
            endDate: "*"
    }
});

                <table>
                <tr>
                    <th>Name of Show</th>
                    <td> <input type='text' name='showName'></input></td>
                </tr>
                <tr>
                    <th>Location</th>
                    <td><input type='text' name='location'></input></td>
                </tr>
                <tr>
                    <th><span style='padding-right: 50px;'>Select Literature</span></th>
                    <td><input type='checkbox' name='list' id='fullProduct'></input><span style='font-size: 12px;'>Guide One</span></td>
                    <td><input type='checkbox' name='list' id='oilProduct'></input><span style='font-size: 12px;'>Guide Two</span></td>
                </tr>                               
                <tr>                                
                    <td></td>                       
                    <td><input type='checkbox' name='list' id='diamondProduct'></input><span style='font-size: 12px;'>Guide Three</span></td>
                    <td><input type='checkbox' name='list' id='motorProduct'></input><span style='font-size: 12px;'>Guide Four</span></td>
                </tr>                               
            </table>
4

2 回答 2

22

您的name复选框组的 是list[], not list,因此您必须这样声明规则。由于它包含方括号,因此[]您必须将其括在引号中

rules: {
    'list[]': {
        required: true
    }
},

你的 jsFiddle:http: //jsfiddle.net/ZDz59/1/

于 2013-02-19T20:42:59.720 回答
2

如果您只想始终选中其中一个复选框,请改用input type="radio"

如果不是:尝试将复选框的名称属性更改为list[]。由于可以有多个检查值,因此它必须包含括号以指示它是一个数组。否则该值将被覆盖。

于 2013-02-19T20:14:43.050 回答