Проверка полей <input type="radio"
Здравствуйте!
Помогите пожалуйста.:help: Взял вариант приведённый в этой теме, и после небольшой модификации хотел использовать для проверки заполненности полей формы. Обычные поля то просто можно пометить так: Цитата:
Но у меня возникла необходимость провернуть, нечто подобное с чекбоксами. Цитата:
Собственно вот сам код:
<input type="radio" class="radio111">#1</br>
<input type="radio" class="radio111">#2</br>
<input type="radio" class="radio111">#3</br>
</br>
<button type="button" onclick="checkFieldsInForm()">Отправить данные</button>
<div class="valBut"></br>Поля не заполнены!</div>
<script>
function checkFieldsInForm() {
if ( $('.radio111').val() ) {
$('.valBut').hide();
} else {
$('.valBut').show();
}
}
$('.radio1').change(function() {
checkFieldsInForm();
});
$('.valBut').hide();
</script>
Такой-же вариант с текстовым полем естественно работает!
<input type="text" class="radio222">
</br>
<button type="button" onclick="checkFieldsInForm2()">Отправить данные</button>
<div class="valBut2"></br>Поля не заполнены!</div>
<script>
function checkFieldsInForm2() {
if ( $('.radio222').val() ) {
$('.valBut2').hide();
} else {
$('.valBut2').show();
}
}
$('.radio1').change(function() {
checkFieldsInForm2();
});
$('.valBut2').hide();
</script>
Я прекрасно понимаю, что проблема здесь: .val Но к сожалению решения сам не смог найти:( Единственный вариант который начал работать, но не совсем как хотелось бы, это: .val Заменить на: .onchange Суть неправильной работы этого метода в том, что ему по барабану на содержимое чекбоксов радио. Ребята подскажите пожалуйста как решить данную проблему, буду весьма благодарен!:thanks: |
.javaNoob, если я правильно понял.
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<style>
.error {
display: none;
}
</style>
</head>
<body>
<form action="">
<input type="radio" class="radio" />#1<br />
<input type="radio" class="radio" />#2<br/>
<input type="radio" class="radio" />#3<br /><br />
<button type="submit">Отправить данные</button>
</form>
<div class="error">Поля не заполнены!</div>
<script>
document.forms[0].onsubmit = function() {
var radioElems = document.querySelectorAll('.radio'),
error = document.querySelector('.error');
submit = false;
[].forEach.call(radioElems, function(item) {
item.checked && (submit = true);
});
if (!submit) {
error.style.display = 'block';
return false;
}
};
</script>
</body>
</html>
|
Decode,
Спасибо огромное!:dance: Немного изменил скрипт + добавил комментарии, может пригодится кому.:write:
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<style>
.error {
display: none;
}
</style>
</head>
<body>
<div id="input-radio">
<div class="radio-style">
<label>
<input type="radio" name="radio-poll" value="1" class="radio">
#1
</label>
</div>
<div class="radio-style">
<label>
<input type="radio" name="radio-poll" value="2" class="radio">
#2
</label>
</div>
<div class="radio-style">
<label>
<input type="radio" name="radio-poll" value="3" class="radio">
#3
</label>
</div>
</div>
<button type="submit" onclick="fnName();">Отправить данные</button>
<div class="error">Поля не заполнены!</div>
<script>
function fnName() {
var radioElems = document.querySelectorAll('.radio'); //Поиск элементов в документе с классом .radio.
error = document.querySelector('.error'); //Аналогично предыдущему, только ищем один элемент. Т.е. будет работать только для первого элемента в документе.
submit = false;
[].forEach.call(radioElems, function(item) {
item.checked && (submit = true);
}); // Если я правильно понял, то это простой вариант валидации. (т.е. Поиск среди элементов .radio отмеченного)
if (!submit) {
error.style.display = 'block'; //Если пользователь не выбрал ни одного пункта, меняем CSS стиль и собственно показываем сообщение.
return false;
} else {
error.style.display = 'none'; //Этот вариант сработает в случае если пользователь поставил чекбокс и всё верно. Что бы сообщение не висело на странице.
return false;
}
};
</script>
</body>
</html>
|
Странно, если у вас ни одна кнопка не выбрана по умолчанию, значит логично что и необязательна. Какие тогда претензии к клиенту?
А если есть по умолчанию, то гарантировано выбрано (кнопки не заполняются, их выбирают). Единственное, это если не выбрано, то подстава, но ее проверяют на сервере. Но а вообще-то проверить можно было бы просто - выбрать выбранную кнопку в группе, что позволяет сделать селектор, если не вернула результат, значит и не выбрано. |
| Часовой пояс GMT +3, время: 07:27. |