Вы можете проверять элементы <select>
почти так же, как элементы <input />
, изучая результат .val()
элемента select.
Следует иметь в виду, что <select>
будет иметь значение по умолчанию (которое соответствует <option>
, которое изначально отображается для пользователя в браузере).Это фактически приведет к проверке <select>
(даже если опция выбора не была явно выбрана пользователем).
Чтобы решить эту проблему, рассмотрите возможность добавления <option>
по умолчанию к <select>
следующим образом:
<option selected disabled>Please select something</option>
Добавление этой опции означает, что проверка на <select>
не будет выполнена до тех пор, пока пользовательфактически задействовал <select>
, выбрав допустимый параметр (после чего проверка на выборку пройдет):
(function() {
/* Consider using submit on form, rather than a click event
listener on the Go button */
$('form[name="Form1"]').submit(function(e) {
e.preventDefault();
/* Exclude call to genericValidationText() for
this snippet to simplify it
genericValidationText('form[name="Form1"]');
*/
genericValidationSelect('form[name="Form1"]');
});
}());
function genericValidationSelect(formName) {
let notValid = false;
/* Iterate each select in the form */
$('select', formName).each(function() {
/* Check value in similar way. If null value,
then consider the select invalid */
var selectedOption = $(this).val();
if (selectedOption === null) {
notValid = true;
}
});
if(notValid) {
alert('Please select an option');
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<!-- Fixed : remove closing form tag -->
<form name="Form1">
<!-- Fixed : typo -->
<label>Question 1</label>
<input type="text" class="required" name="question1">
<label>Question 2</lable>
<select class="required" name="question3">
<!-- Added default "no value option" to demonstrate validation -->
<option selected disabled>Please select something</option>
<option value="0">a</option>
<option value="1">b</option>
<option value="2">c</option>
<option value="3">d</option>
</select>
<button role="button"id="Go">Go</button>
</form>
Надеюсь, это поможет!