使用 jQuery 验证以确保至少有一个下拉列表具有值
Using jQuery validate to ensure at least one dropdown has a value
我是 jQuery、jQuery 验证和 JavaScript 的新手,所以我为我的无知提前道歉。我花了几个小时寻找答案并尝试不同的代码,但我一直无法弄清楚什么看起来应该很简单。
为简单起见,我有两个下拉菜单。一个给苹果,一个给橘子。我想确保在使用 "Approve" 按钮提交表单时至少有一个下拉列表具有值。如果两个下拉列表都没有值,则不应提交表单,并且每个字段旁边的通知应声明类似 "At least one dropdown must have a value" 的内容。然后选择一个下拉菜单时,两个下拉菜单的警告都会消失。
表单代码为:
<form name="form1" id="form1" action="" method="post">
<table>
<tr>
<td><label for="selApples">Apples</label></td>
<td><select name="selApples" id="selApples" class="authSelect">
<option value="">None</option>
<option value="1">1</option>
<option value="2">2</option>
</select>
</td>
</tr>
<tr>
<td><label for="selOranges">Oranges</label></td>
<td><select name="selOranges" id="selOranges" class="authSelect">
<option value="">None</option>
<option value="1">1</option>
<option value="2">2</option>
</select>
</td>
</tr>
<tr>
<td colspan="2"> </td>
</tr>
<tr>
<td colspan="2">
<input type="button" name="btnApprove" id="btnApprove" value="Approve">
<input type="button" name="btnCancel" id="btnCancel" value="Cancel">
</td>
</tr>
</table>
</form>
我会 post 我尝试 jQuery 但冒着让自己难堪的风险,我不会。有人对解决此问题的最佳方法有任何想法吗?
编辑:因为有人指出我应该使用 require_from_group 这是我的尝试:
$("#btnApprove").on("click", function() {
$("#form1").validate( {
ignore: "",
rules: {
selApples: {
require_from_group: [1, ".authSelect"]
},
selOranges: {
require_from_group: [1, ".authSelect"]
}
}
});
});
您的 require_from_group
规则没有任何问题。问题是您已将 .validate()
方法包装在 click
处理程序中。
.validate()
方法是插件初始化 的方式,它永远不会被表单的按钮调用。
$(document).ready(function() {
$("#form1").validate({ // intialize plugin
ignore: "",
rules: {
selApples: {
require_from_group: [1, ".authSelect"]
},
selOranges: {
require_from_group: [1, ".authSelect"]
}
}
});
$("#btnApprove").on("click", function() {
$("#form1").valid(); // trigger validation
});
});
演示:http://jsfiddle.net/0arvubxy/
如果您想将两条错误消息合二为一,那么您可以使用 groups
选项。
如果需要移动错误信息,那么使用errorPlacement
选项。
我是 jQuery、jQuery 验证和 JavaScript 的新手,所以我为我的无知提前道歉。我花了几个小时寻找答案并尝试不同的代码,但我一直无法弄清楚什么看起来应该很简单。
为简单起见,我有两个下拉菜单。一个给苹果,一个给橘子。我想确保在使用 "Approve" 按钮提交表单时至少有一个下拉列表具有值。如果两个下拉列表都没有值,则不应提交表单,并且每个字段旁边的通知应声明类似 "At least one dropdown must have a value" 的内容。然后选择一个下拉菜单时,两个下拉菜单的警告都会消失。
表单代码为:
<form name="form1" id="form1" action="" method="post">
<table>
<tr>
<td><label for="selApples">Apples</label></td>
<td><select name="selApples" id="selApples" class="authSelect">
<option value="">None</option>
<option value="1">1</option>
<option value="2">2</option>
</select>
</td>
</tr>
<tr>
<td><label for="selOranges">Oranges</label></td>
<td><select name="selOranges" id="selOranges" class="authSelect">
<option value="">None</option>
<option value="1">1</option>
<option value="2">2</option>
</select>
</td>
</tr>
<tr>
<td colspan="2"> </td>
</tr>
<tr>
<td colspan="2">
<input type="button" name="btnApprove" id="btnApprove" value="Approve">
<input type="button" name="btnCancel" id="btnCancel" value="Cancel">
</td>
</tr>
</table>
</form>
我会 post 我尝试 jQuery 但冒着让自己难堪的风险,我不会。有人对解决此问题的最佳方法有任何想法吗?
编辑:因为有人指出我应该使用 require_from_group 这是我的尝试:
$("#btnApprove").on("click", function() {
$("#form1").validate( {
ignore: "",
rules: {
selApples: {
require_from_group: [1, ".authSelect"]
},
selOranges: {
require_from_group: [1, ".authSelect"]
}
}
});
});
您的 require_from_group
规则没有任何问题。问题是您已将 .validate()
方法包装在 click
处理程序中。
.validate()
方法是插件初始化 的方式,它永远不会被表单的按钮调用。
$(document).ready(function() {
$("#form1").validate({ // intialize plugin
ignore: "",
rules: {
selApples: {
require_from_group: [1, ".authSelect"]
},
selOranges: {
require_from_group: [1, ".authSelect"]
}
}
});
$("#btnApprove").on("click", function() {
$("#form1").valid(); // trigger validation
});
});
演示:http://jsfiddle.net/0arvubxy/
如果您想将两条错误消息合二为一,那么您可以使用
groups
选项。如果需要移动错误信息,那么使用
errorPlacement
选项。