JQuery添加验证方法来验证有关另一个元素的形式
问题描述:
我试图在JQuery中创建一个自定义的验证方法,我无法设法使其正常工作。JQuery添加验证方法来验证有关另一个元素的形式
这是我想做的事:
<div class="row">
<label for="fld-stories">Stories</label>
<select id="fld-stories" class="valid" name="stories" title="">
<option value="">--</option>
<option value="1" label="1">1</option>
<option value="2" label="2">2</option>
<option value="3" label="3">3</option>
<option value="4" label="4">4</option>
<option value="5" label="5">5</option>
</select>
</div>
<div id="row_master_bedroom_location" class="row">
<label for="fld-master_bedroom_location">Master Bedroom Location</label>
<select id="fld-master_bedroom_location" name="master_bedroom_location" title="">
<option value="up">Upstairs</option>
<option value="down">Downstairs</option>
</select>
</div>
如果用户选择主卧室的位置是楼上(见第二选择),故事的房子数量应大于或等于2 (这是合乎逻辑的,因为如果只有一个故事,主卧室不能在楼上)。
为此我尝试一个自定义的方法添加到我的JQuery验证:
$.validator.addMethod('masterBedroomLocation', function(value, element, params) {
if (value == 'up' && $("#fld-stories").val() < 2){
return false;
}
}, 'You cannot select "Upstairs" for a one–story home');
我不知道如何获取表单另一个元素的值,我试过JQuery的旧时尚之路但它似乎并不奏效。
有关其他信息,我添加了自定义的方法在全球JavaScript文件,在结合了jQuery验证到有一类特殊的名字每一个表格功能。
答
我设法让它工作。 它看起来像jQuery选择 $( “#FLD-故事”) 正常工作。 由于某种原因,我不知道,如果我反转我做我的支票的方式,并返回true而不是false,该方法有效。
下面是新方法:
$.validator.addMethod('masterBedroomLocation', function(value, element, params) {
if (value == 'up' && $("#fld-stories").val() >= 2){
return true;
}
}, 'You cannot select "Upstairs" for a one–story home');
答
我改进我的代码一点点。 下面是新方法:
$.validator.addMethod('masterBedroomLocation', function(value, element, params) {
if($('#fld-master_bedroom_location').val() == 'down'){
return true;
}
else if($('#fld-master_bedroom_location').val() == 'up' && $("#fld-stories").val() >= 2){
return true;
}else{
return false;
}
}, 'You cannot select "Upstairs" for a one–story home');
我希望这可以帮助别人。
而是一个自定义的验证方法,为什么不只需修改相应的选择列表的选项?在做出选择之后,用户不会被呈现不适用的选项会更有意义。 – Sparky 2012-02-07 18:20:35