我有一个选择"欠费LHOLocation",它有一个选项"未选择",值为-1,所有其他可选值都大于0。
这是我的javascript中定义的规则
$("#ArrearsLHOLocation").rules("add", {
min: {
depends: function (elem) {
return $("#rbArrearsLHO[value='True']").is(":checked") ? 0 : -1;
}
},
messages: {
min: "You have stated that the applicant/coapplicant have LHO arrears but you have not stated where!"
}
});
以下是在Chrome中观察到的手表。
$("#rbArrearsLHO[value='True']").is(":checked") ? 0 : -1: 0
$("#rbArrearsLHO[value='True']").is(":checked"): true
$("#ArrearsLHOLocation").val(): "-1"
$("#ArrearsLHOLocation").val() >=($("#rbArrearsLHO[value='True']").is(":checked") ? 0 : -1): false
此页面已成功提交,但不正确。 如果我切换单选按钮,手表如下所示:
$("#rbArrearsLHO[value='True']").is(":checked") ? 0 : -1: -1
$("#rbArrearsLHO[value='True']").is(":checked"): false
$("#ArrearsLHOLocation").val(): "-1"
$("#ArrearsLHOLocation").val() >=($("#rbArrearsLHO[value='True']").is(":checked") ? 0 : -1): true
此页面已停止提交,并显示我的错误消息。
我做错了什么?
史蒂夫
--根据请求的HTML片段--
<td>Do they have arrears?</td><td>
Yes <input id="rbArrearsLHO" name="rbArrearsLHO" type="radio" value="True" />
No <input checked="checked" id="rbArrearsLHO" name="rbArrearsLHO" type="radio" value="False" />
</td>
</tr>
<tr>
<td colspan="2">
<blockquote>
If YES, Where?
<select data-val="true" data-val-number="The field ArrearsLHOLocation must be a number." id="ArrearsLHOLocation" name="ArrearsLHOLocation">
<option value="-1">None Selected</option>
<option value="4">Location 1</option>
<option value="6">Location 2</option>
<option value="5">Location 3</option>
<option value="7">Location 4</option>
</select>
</blockquote>
</td>
</tr>
select
只能required
或不。 我从未见过在select
上使用min
规则来强制用户选择一个选项。
您的"None Selected"
选项应包含value=""
,然后当您对此声明required
规则时,用户将被迫选择除"None Selected"
以外的任何选项。
<select name="list">
<option value="">None Selected</option>
<option value="1">option 1</option>
<option value="2">option 2</option>
<option value="3">option 3</option>
</select>
然后,您的 depends 参数只需要返回一个布尔值来说明用户是否需要选择一个选项。
$('[name="list"]').rules("add", {
required: {
depends: function (elem) {
return $("#check").is(":checked");
}
},
messages: {
required: "Select from the list"
}
});
演示:http://jsfiddle.net/7k2zg7rv/
编辑:
由于您希望将第一个option
保留为value="-1"
,因此您需要使用addMethod()
方法创建自定义规则/方法,该方法将第一个option
识别为无效。
$.validator.addMethod('select', function(value, element) {
return (value == -1) ? false : true;
});
更新的演示:http://jsfiddle.net/7k2zg7rv/2/
查看jquery.valid,我发现依赖应该只计算为真/假。 所以修改最小值为具有 [param : 0],当我需要它时,这将是最小值。 然后,当最小值应该有效时,将依赖值更改为 true 可以解决此问题。
$("#ArrearsLHOLocation").rules("add", {
min: {
param: 0,
depends: function (elem) {
return $("#rbArrearsLHO[value='True']").is(":checked");
}
},
messages: {
min: "You have stated that the applicant/coapplicant have LHO arrears but you have not stated where!"
}
});
演示:小提琴(从@Sparky以前的小提琴分叉而来)