我有一个人的年龄的下拉菜单,如果这个人的年龄低于85岁,我需要在我的“current_health”单选按钮上需要一定的值才能继续。我使用jQuery validate插件和表单向导插件,允许我让用户一次浏览表单2个问题。用户填写这2个问题,然后单击“下一步”并检查验证。
我尝试了许多补救措施,这就是我现在所拥有的:
var validator = $("#order-form").validate({
errorContainer: container,
errorLabelContainer: $("ul", container),
wrapper: 'li',
meta: "validate",
rules: {
current_health: {
equalTo: "#requiredUnder85",
required:{
depends: function(element){
return $("#age").val() < 85;
}
}
}
}
});
“requiredUnder85”是一个隐藏字段,其文本等于需要检查验证通过的单选框的值。
如果年龄< 85,current_health需要匹配“终末/慢性疾病”,否则无论current_health是什么都无关紧要。这是我需要验证的。 Age是一个选择框,current_health是一个单选按钮集。
我一直在寻找帮助,但我无法达到我的需要。任何帮助表示赞赏
编辑:包括表单标记。 (注意:我也在使用smarty,你可以看到)
<label for="age">What is your current age?</label><br/>
<select id="age" name="age" {literal} class="input-required {validate:{required:true}}" title="Required"{/literal}>
<option value=""></option>
{include file='snippets/age.tpl'}
</select><br/><br/>
<label for="current_health">Choose the most applicable health status</label><br/>
<input type="radio" name="current_health" id="ch1" value="Healthy" {if $data.current_health eq 'Healthy' OR !isset($data.current_health)}checked="checked"{/if} /> Healthy<br/>
<input type="radio" name="current_health" id="ch2" value="Terminal/Chronic Illness" {if $data.current_health eq 'Terminal/Chronic Illness'}checked="checked"{/if}/> Terminal/Chronic Illness
编辑2 :添加自定义规则后,如果条件不满足,我将无法再在表单向导中前进,但我没有显示任何错误消息。
var validator = $("#order-form").validate({
errorContainer: container,
errorLabelContainer: $("ul", container),
wrapper: 'li',
meta: "validate",
rules: {
current_health: {
ageAndHealth: true
}
}
});
jQuery.validator.addMethod("ageAndHealth", function(value, element, parameter) {
if($('#age').val() < 85 && value != "Terminal/Chronic Illness"){
return false;
}
return true;
}, "This is the error message");
答案 0 :(得分:1)
听起来你只需要为这种情况创建自定义方法/规则......
请参阅:http://jqueryvalidation.org/jQuery.validator.addMethod/
jQuery.validator.addMethod("myRule", function(value, element, parameter) {
// your function for evaluating the element's validity
// return true when it passes
// return false when it fails and message will automatically display
}, "This is the error message");
这些参数传递给你的函数:
<强>值强>
类型:字符串
验证元素的当前值
<强>元素强>
类型:元素
要验证的元素
<强>参数强>
类型:字符串
为该方法指定的参数,例如对于min:5,参数为5,对于范围:[1,5]它是[1,5]
像任何其他规则一样定义它......
rules: {
current_health: {
myRule: true
// myRule: 85 // alternatively, you could pass parameters to your function
}
}