jquery验证取决于规则

时间:2013-11-28 04:20:13

标签: jquery jquery-validate depends

我的规则似乎与this thread中的答案格式相似,但未正确验证。如果我注释掉此规则,则会在表单的其余部分上正确执行验证。我发现的其他语法错误导致了相同的结果,所以我希望这里有一个语法错误,但如果我能发现它就会失败。

规则是

freq: {
    required: {
        depends: {function(element){
            return $('#freqBand').val().length > 0 &&
            $('#freqBand').val() != "24GHz");
            }
        }
    }
},

我希望如果输入字段freqBand(选择输入)值不是“24GHz”或什么都不是,那么freq字段是必需的。

我只是在学习jquery,所以它可能是一个真正的前额扒手。

编辑11/28

我做了更多的故障排除,发现$('#freqBand')。val()未定义。

它在HTML中找到

<select  name="freqBand" tabindex="6">
        <option value="" label="&ndash;Choose&ndash;" >&ndash;Choose&ndash;</option>
        <option value="27MHz" label="27 MHz" >27 MHz</option>
        <option value="50MHz" label="50 MHz" >50 MHz</option>
        <option value="75MHz" label="75 MHz" >75 MHz</option>
        <option value="24GHz" label="2.4 GHz" >2.4 GHz</option>
</select>

查询验证文档说明select元素的正确语法应为

$("select.freqBand option:selected").val()

但这也解析为undefined。这些添加的信息是否有助于某人帮助我?

3 个答案:

答案 0 :(得分:1)

我知道这是一个老帖子,但我目前遇到了类似的问题。也就是说,我担心使用id选择器#作为name属性。根据我的发现,id选择器绝不能用于name属性,而name属性应该通过选择器[name='name']来解决

请参阅:Name vs Id attribute in HTML

这可能并不能完全解决你的问题,但它肯定是现在要注意的事情,而不是以后。我再次知道这已经过去了一年。另外,如果我对名称属性的id选择器是正确的,那么代码的一个大问题已经解决了。

除此之外,Joke_Sense的所有信息仍然是真实且相关的。

哦,我是StackOverflow的新手(虽然我还没有创建一个我不认为的帐户)。如果有人能给我反馈这个回答是否......那么它本来只是一个旁边。我只是在寻求建设性的批评。我有自己的知识和诀窍,我不想自欺欺人。

答案 1 :(得分:0)

依赖后缺少colon。取决于附加braces是不必要的。试试这个:

freq: {
required: {
    depends: function(element){ //Missing colon here and no opening braces required
        return ($('#freqBand').val().length > 0 &&
        $('#freqBand').val() != "24GHz")); 
        }
     }
},

答案 2 :(得分:0)

这是一个老线程,很可能已经解决,但我想我会试一试。

我看到的最明显的问题是您的选择输入没有分配ID,但您正在调用depends语句中的ID:$('#freqBand').val()。您需要在select中添加一个ID,以便以该方式引用该元素。

另请注意,您的验证声明也缺少一个括号。在“24GHz”之后你有一个结束,但你没有一个开头,这也可能导致问题。

另外,不确定为什么使用长度。我想你可能想确保值中有一些东西,所以我可能会稍微修改一下depends语句。

无论如何,所有这三项工作(使用版本1.13.1验证):

freq: {
    required: { 
        depends: function(element){
            return ($("#freqBand").val() != "" &&  $("#freqBand").val() != "24GHz")
        } 
    } 
}

freq: {
    required: { 
        depends: function(element){
            return ($("select[name=freqBand]").val() != "" &&  $("select[name=freqBand]").val() != "24GHz")
        } 
    } 
}

freq: {
    required: { 
        depends: function(element){
            return ( ($("select[name=freqBand]").val().length > 0) &&  $("select[name=freqBand]").val() != "24GHz")
        } 
    } 
}

希望这有帮助。

相关问题