【发布时间】:2015-07-20 18:31:52
【问题描述】:
我正在尝试确保用户输入 2 个字段中的 1 个,“ExactOrderSize”或“approxOrderSize”。
<p>Exact size of your order (# of items)</p>
<input id="ExactOrderSize" type="text" name="ExactOrderSize">
<p>Approximate size of your order</p>
<select id="approxOrderSize" name="approxOrderSize" >
<option value="" selected="selected"></option>
<option value="0">0-35</option>
<option value="35">35-50</option>
<option value="50">50-100</option>
</select>
为此,我使用了 jQuery Validator 的帮助。一切都很好,除了这个自定义验证规则,它似乎什么都不做。
$('#quoteform').validate({
rules: {
FirstName: {
required: true
},
LastName: {
required: true
},
approxOrderSize: {
required: function() {
if($('#ExactOrderSize').val()=="")
return true;
else
return false;
}
},
DateNeededBy: {
required: true
}
}
});
我的想法是基本上运行一个函数,如果未填写 #ExactOrderSize 字段,则将 #approxOrderSize 字段设为必需。又名设置required = true
到目前为止,我们从 StackOverflow 的答案中发现,问题在于可能隐藏的两个字段。当页面首次加载时,最初不会显示 #ExactOrderSize 或 #approxOrderSize。
他们必须单击以下两个按钮之一才能显示该字段:
根据他们选择的按钮,幻灯片动画会显示相应的字段。
“是” --> 显示#ExactOrderSize 字段
"No" --> 显示#approxOrderSize 字段
虽然这将是一个不错的用户界面,但显然它会导致无法显示验证消息的问题,这使得 jQuery Validation 无法正常工作。
作为我尝试的解决方案:
$('#quoteform').submit(function() {
$('#not-exact').show();
$('#yes-exact').show();
});
这样表单提交后所有字段都会显示..但它仍然不起作用。
附:如果您想查看,实际页面是HERE。
【问题讨论】:
-
@Michael Hamilton 感谢您的贡献,我已编辑问题以反映对该问题的进一步理解。
标签: jquery validation jquery-validate