我正在使用jQuery验证插件(http://bassistance.de/jquery-plugins/jquery-plugin-validation/)
我有以下结构:
<select name="s1" id="s1">
<option value="url">url</option>
<option value="normal">normal</option>
</select>
<input name="s1_value" id="s1_value" type="text" />
现在,我需要验证规则(使用jQuery验证插件)
如果我在列表框中选择“url”作为值,则输入字段应仅包含有效的URL
如果我在列表框中选择'normal'作为值,则输入字段可以包含任何文本
对于任何选择,输入字段的值不应为空
怎么做?
答案 0 :(得分:0)
我认为最简单的解决方案可能就是使用http://docs.jquery.com/Plugins/Validation/rules#.22add.22rules规则(“添加”,规则)函数来添加和规则(“删除”,规则)以根据该选择的选择值删除规则。
$("select").change(function(){
if(this.value == "url") {
$("input").rules("add",{
url: true
})
}
if(this.value == "normal") {
$("input").rules("remove", "url")
}
})
答案 1 :(得分:0)
验证插件允许在每个元素的类中指定规则。您可以从required
和url
规则开始:
<input name="s1_value" id="s1_value" type="text" class="required url" />
如果列表框值变为url
,您可以从那里删除normal
类:
$("#s1").change(function() {
if ($(this).val() == "url") {
$("#s1_value").addClass("url");
} else {
$("#s1_value").removeClass("url");
}
});
这样,验证插件不会针对url
规则验证字段,因为它不会在其类中公开该规则。
您可以测试此解决方案here。
答案 2 :(得分:0)
您可以将change
事件连接到选择输入:
jQuery("#s1").change(function(){
var val = jQuery(this).val();
...
});
然后在该函数中,使用验证插件中的add
and remove
functions根据需要调整规则。