所以我有一个HTML下拉框4值A,B,C和D.和4预填充文本框(P1,P2,P3,P4)与一些文本在他们和4空白文本框(B1,B2,B3和B4)。jquery自定义规则验证与取决于和参数属性
我希望根据在下拉框中选择什么值来应用验证。
如果下拉值为A,我只想检查空白文本框B1中的值不等于预先填充的文本框中的值P1,并且B1也不能留为空白。
与B - > P2.val!= B2.val相同的下拉框值,B2不应该为空。同样适用于其他。
我想出了这种方法的一个文本框,但它不工作,不知道什么是错的。希望能解决我的问题。
下面的代码片段的预期结果是,当dropdownbox的值为A时,它应该只有这样,才能检查两个文本框中的值是否相同,即在P1和B1中。 !
HTML
<form>
<select class="inlineEdit" name="Dropdownbox" id="Dropdownbox">
<option value="A">
A
</option><option value="B">
B
</option><option value="C">
C
</option><option value="D">
D
</option>
</select>
<br/><br/>
<input type="text" name="P1" value="Old Value" />
<br/><br/>
<input type="text" name="B1" />
<button type="submit">Test</button>
</form>
JQuery的
jQuery.validator.addMethod("change", function(value, element, param) {
alert(param + " " + value);
return this.optional(element) || value != param;
}, jQuery.format("You must enter {0}"));
$("form").validate({
rules: {
B1: {
required: function(element) {
return $("#Dropdownbox").val() == "A";
},
change: {
param: $("#P1").val(),
depends: function(element) {
return $("#Dropdownbox").val() == "A";
}
}
}
},
debug: true
});
........
一个可以尝试在这里运行上面的代码:http://jsfiddle.net/
问题是$(“#P1”)。val发送的是true,而不是param中的实际值,这就是为什么它不起作用。如果我硬编码param中的值,代码工作正常。任何解决方案
感谢,
您是否在DropdownA前丢失了#号? – JSager 2012-03-26 18:07:18
amm不,我将#sign放在原始代码中。 – Nanu 2012-03-26 18:58:38
好吧,如果你没有发布原始代码,它会变得更加困难,但是我也可以看到你在改变对象之后遗漏了一个关闭点(你关闭了,取决于,但是没有改变) – JSager 2012-03-26 20:17:54