我正在使用here中的验证插件。我正在尝试强制用户在下拉列表中选择一个选项,所以这是我的html列表:
Select the best option<br/>
<select name="dd1" id="dd1">
<option value="none">None</option>
<option value="o1">option 1</option>
<option value="o2">option 2</option>
<option value="o3">option 3</option>
</select> <br/><br/>
这是jquery验证的东西:
$("#everything").validate({
onsubmit: true,
rules: {
dd1: {
required: {
depends: function(element) {
return $("#dd1").val() == "none";
}
}
},
messages: {
dd1: {
required: "Please select an option from the list, if none are appropriate please select 'Other'",
},
}
});
我没有看到任何问题,但即使我从下拉列表中选择“无”并单击“提交”,它也不会对其进行验证,因此不会显示任何消息。谁能告诉我我做错了什么?
答案 0 :(得分:64)
required()
州的documentation:
要强制用户从选择框中选择一个选项,请提供一个空的选项,例如
<option value="">Choose...</option>
通过在value="none"
标记中添加<option>
,您可以阻止验证调用。您还可以删除自定义验证规则,从而简化代码。这是一个jsFiddle显示它在行动:
如果您无法将value
属性更改为空字符串,我不知道该告诉您什么...我找不到任何方法让它进行验证。
答案 1 :(得分:6)
正如我们所知,jQuery validate plugin invalidate具有空值时选择字段。为什么我们不在需要时将其值设置为空白。
是的,您可以使用一些预定义值验证选择字段。
$("#everything").validate({
rules: {
select_field:{
required: {
depends: function(element){
if('none' == $('#select_field').val()){
//Set predefined value to blank.
$('#select_field').val('');
}
return true;
}
}
}
}
});
我们可以为选择字段设置空白值,但在某些情况下我们不能。对于Ex:使用为您生成Dropdown字段的函数,您无法控制它。
我希望它对我有所帮助。
答案 2 :(得分:3)
这是我的解决方案:
我在
<div class="col-lg-10">
<select class="form-control" name="HoursEntry" id="HoursEntry" required>
<option value="">Select.....</option>
<option value="0.25">0.25</option>
<option value="0.5">0.50</option>
<option value="1">1.00</option>
<option value="1.25">1.25</option>
<option value="1.5">1.50</option>
<option value="2">2.00</option>
<option value="2.25">2.25</option>
<option value="2.5">2.50</option>
<option value="3">3.00</option>
<option value="3.25">3.25</option>
<option value="3.5">3.50</option>
<option value="4">4.00</option>
<option value="4.25">4.25</option>
<option value="4.5">4.50</option>
<option value="5">5.00</option>
<option value="5.25">5.25</option>
<option value="5.5">5.50</option>
<option value="6">6.00</option>
<option value="6.25">6.25</option>
<option value="6.5">6.50</option>
<option value="7">7.00</option>
<option value="7.25">7.25</option>
<option value="7.5">7.50</option>
<option value="8">8.00</option>
</select>
答案 3 :(得分:1)
最简单的方法是将required
添加到select
Select the best option
<br/>
<select name="dd1" id="dd1" required>
<option value="none">None</option>
<option value="o1">option 1</option>
<option value="o2">option 2</option>
<option value="o3">option 3</option>
</select>
<br/><br/>
答案 4 :(得分:0)
$(document).ready(function(){
$("#HoursEntry").change(function(){
var HoursEntry = $(#HoursEntry option:selected).val();
if(HoursEntry == "")
{
$("#HoursEntry").html("Please select");
return false;
}
});
});
答案 5 :(得分:0)
<div id="msg"></div>
<!-- put above tag on body to see selected value or error -->
<script>
$(function(){
$("#HoursEntry").change(function(){
var HoursEntry = $("#HoursEntry option:selected").val();
console.log(HoursEntry);
if(HoursEntry == "")
{
$("#msg").html("Please select at least One option");
return false;
}
else
{
$("#msg").html("selected val is "+HoursEntry);
}
});
});
</script>
答案 6 :(得分:-1)
我稍微修改了你的代码。这是一个工作版本(对我来说):
<select name="dd1" id="dd1">
<option value="none">None</option>
<option value="o1">option 1</option>
<option value="o2">option 2</option>
<option value="o3">option 3</option>
</select>
<div style="color:red;" id="msg_id"></div>
<script>
$('#everything').submit(function(e){
var department = $("#msg_id");
var msg = "Please select Department";
if ($('#dd1').val() == "") {
department.append(msg);
e.preventDefault();
return false;
}
});
</script>