2010-12-06 2 views
20

Я использую JQuery Validation плагин для проверки формы, и я не в состоянии проверить список/выберите полеJQuery проверки выберите поле

<select id="select"> 
<option value="-1">Choose an option</option> 
<option value="1">One</option> 
<option value="2">Two</option> 
<option value="3">Three</option> 
</select> 

Теперь я хочу, чтобы убедиться, что пользователь выбирает ничего, кроме «Выберите один option "(который является значением по умолчанию и имеет значение как -1). Так что он не будет проверяться, если вы выберете первый вариант. Как это может быть сделано?

+0

возможно дубликат [JQuery Validate Required Select] (http://stackoverflow.com/questions/2901125/jquery-validate -required-select) – 2014-04-15 10:46:58

ответ

11

Вы можете использовать Jquery Validator custom rule.

Аналогичный пример обсуждается here. Код ниже на примере:

// add the rule here 
$.validator.addMethod("valueNotEquals", function(value, element, arg){ 
    return arg != value; 
}, "Value must not equal arg."); 

// configure your validation 
$("form").validate({ 
    rules: { 
    SelectName: { valueNotEquals: "-1" } 
    }, 
    messages: { 
    SelectName: { valueNotEquals: "Please select an item!" } 
    } 
}); 
+0

@ вниз избирателей: почему? Я знаю, что «select: required» работает, но этот ответ также действителен. Это также дает вам больше возможностей для настройки сообщения об ошибке. – 2016-10-08 01:45:05

19

Поместите <option value="">Choose an option</option> как пустое, а не -1

с помощью Validation Jquery

rules: {      
       select: "required" 
} 
+0

только вещь, я не могу очистить значение до "" – 2010-12-06 08:30:54

+1

Возможно, это самый простой способ. – di3sel 2012-02-29 10:33:57

4

Добавьте это в правиле

select:{ 
    required: function(element) { 
    if($("#select").val() =='-1'){ 
     return false; 
    } else { 
     return true; 
    } 
    } 
} 
1

Или использовать значение элемента:

required: function(elm) { 
    if(elm.options[elm.options.selectedIndex].value != "-1") { 
     return true; 
    } else { 
     return false; 
    } 
} 
1

Почему бы вам не использовать значение из состояние?

required: function(elm) { 
    return (elm.options[elm.options.selectedIndex].value != "-1"); 
} 

Это делает то же самое, что решение от Robin, но намного короче.

0

Как мы можем проверить для JQuery UI выберите в раскрывающемся списке

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
 
<script src="http://code.jquery.com/ui/1.11.4/jquery-ui.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.15.0/jquery.validate.min.js"></script> 
 
<script> 
 
$(".intselect").selectmenu(); 
 
$().ready(function() { 
 

 

 
jQuery.validator.setDefaults({ 
 
    debug: true, 
 
    success: "valid" 
 
}); 
 
$("#validateregister").validate({ 
 
    rules: { 
 
\t firstname: { 
 
     required: true 
 
    }, 
 
\t email: { 
 
     required: true, 
 
\t email: true 
 
    }, 
 
    year: { 
 
     required: true 
 
    } 
 
    } 
 
    
 
}); 
 
$('#validateregister').change(function() { 
 
     if ($("#validateregister").valid()) { 
 
      $(".go").removeAttr("disabled"); 
 
     } 
 
\t \t else{ 
 
\t \t \t $(".go").attr("disabled","disabled"); 
 
\t \t } 
 
    }); 
 
}); 
 
</script>
"sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> 
 
<link rel="stylesheet" href="http://code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
<form id="validateregister" style="width: 300px;"> 
 
    <div> <br /> 
 
    <input type="text" name="firstname" class="form-control" id="firstname" /> 
 
    </div> 
 
    <div> <br /> 
 
    <input type="text" name="email" class="form-control" id="email" /> 
 
    </div> 
 
    <div> <br /> 
 
    <select class="form-control intselect" name="year" id="year"> 
 
     <option value="">Select year</option> 
 
     <option value="2014">2014</option> 
 
     <option value="2015">2015</option> 
 
     <option value="2016">2015</option> 
 
    </select> 
 
    </div> 
 
    <div> <br /> 
 
    <input type="submit" class="btn btn-default go" value="submit" disabled> 
 
    </div> 
 
</form>

Смежные вопросы