我的规则似乎与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="–Choose–" >–Choose–</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。这些添加的信息是否有助于某人帮助我?
答案 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")
}
}
}
希望这有帮助。