JQuery添加验证方法以验证表单中的另一个元素

JQuery添加验证方法以验证表单中的另一个元素,jquery,validation,jquery-validate,Jquery,Validation,Jquery Validate,我正试图在JQuery中创建一个自定义验证方法,但无法使其正常工作 以下是我想做的: <div class="row"> <label for="fld-stories">Stories</label> <select id="fld-stories" class="valid" name="stories" title=""> <option value="">--</option>

我正试图在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>

故事
--
1.
2.
3.
4.
5.
主卧位置
楼上的
楼下
如果用户选择楼上的主卧位置(参见第二个选择),房子的层数应大于或等于2(这是合乎逻辑的,因为如果只有一层,主卧就不能在楼上)

为此,我尝试向JQuery验证程序添加一个自定义方法:

$.validator.addMethod('masterBedroomLocation', function(value, element, params) {
    if (value == 'up' && $("#fld-stories").val() < 2){
        return false;
    }
}, 'You cannot select &quot;Upstairs&quot; for a one&ndash;story home');     
$.validator.addMethod('masterbeddroomlocation',函数(值、元素、参数){
if(value='up'&&$(“#fld stories”).val()<2){
返回false;
}
},“您不能为一层楼住宅选择“楼上”);
我不确定如何获取表单中另一个元素的值,我尝试了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 &quot;Upstairs&quot; for a one&ndash;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 &quot;Upstairs&quot; for a one&ndash;story home');

我希望这能对某些人有所帮助。

与其使用自定义验证方法,不如简单地修改相应的选择列表选项?更合理的是,用户在做出选择后不会看到不适用的选项。