Возвращает false, если в поле выбора Не выбрано значение (кроме заголовка).
У меня есть HTML-форма с полем выбора. При выборе первого выпадающего списка, следующий должен быть автоматически заполнен с помощью AJAX.
При нажатии кнопки Download Records (id="getCsv")
генерируется CSV-файл. Проблема в том, что я хочу сделать все поля обязательными. Вот код jquery
var teacher_name = $("#sel_teacher option:selected").text();
var unittest_name = $("#sel_test1 option:selected").text();
var class_name = $("#sel_class1 option:selected").text();
var class_id = $('#sel_class1').val();
var division_name = $("#sel_div1 option:selected").text();
var division_id = $('#sel_div1').val();
var subject_name = $("#sel_sub1 option:selected").text();
if (teacher_name == "") {
alert('Please Select Teacher Name.');
return false;
} else if(class_name == "") {
alert('Please Select Class Name.');
return false;
} else if(division_name == "") {
alert('Please Select Division Name.');
return false;
} else if(subject_name == "") {
alert('Please Select Subject Name.');
return false;
} else if(unittest_name == "") {
alert('Please Select Unit Test Name.');
return false;
} else {
var myObject = new Object();
myObject.class_name = class_name;
myObject.class_id = class_id;
myObject.division_name = division_name;
myObject.division_id = division_id;
myObject.subject_name = subject_name;
myObject.test_name = unittest_name;
var formData = JSON.stringify(myObject);
$('#getCsv').attr('href','csv_generator.php?data=' + formData);
}
Проблема в том, что когда я нажимаю Download Records
, даже если первое поле выбора пустое, сразу появляется окно предупреждения для второго поля выбора. Я попытался решить эту проблему, используя ниже, но не повезло.
if ($("#sel_teacher").attr("selectedIndex") == 0) {
alert("You haven't selected anything!");
return false;
}
Кто-нибудь может пожалуйста помочь мне с этим? Любая помощь ценится.
3 ответа:
selectedIndex
является свойством, использующимprop
:$("#sel_teacher").prop("selectedIndex")
Кроме того, вы можете упростить свой код, извлекая выбранное значение с помощью только
$("#sel_teacher").val()
и сравнивая с пустой строкой (предполагая, чтоvalue
этой опции пусто).var teacher_name = $("#sel_teacher").val(); // get other <select /> values here... if (teacher_name == '') { alert("You haven't selected anything!"); return false; } // test other values here...
Это может быть из-за значения по умолчанию, которое вы задали для первого текстового поля.Просто измените значение на "" onclick или on blur на этом текстовом поле.
Или вы можете просто решить этот вопрос с помощью атрибута HTML5
required
и добавления прослушивателя событийonchange()
.<select name="sel_teacher" onchange="get_value();" id="sel_teacher" required> <option>--Select Teacher Name--</option> </select> <script> function get_value() { var teacher_name = $("#sel_teacher").val(); // get other <select /> values here... if (teacher_name == '') { alert("You haven't selected anything!"); return false; } else { // write code when teacher_name is selected } } </script>