Я хочу проверить, проверен ли хотя бы один флажок перед отправкой формы, вот мой код:
<script type="text/javascript">
function validate() {
if (document.getElementById('checking').checked) {
alert("checked");
} else {
alert("You didn't check it! Let me check it for you.")
}
}
</script>
<?php foreach (..... ) : ?>
<form name="frm1" id="frm1" method="post" action="next.php" >
...
<input type="checkbox" value="" class="chk" id="checking"/>
...
<a href="#" onclick="$(this).closest('form').submit(); validate();" id="add_view" ><img src="/submit.png"></a>
....
</form>
Мне это нравилось, но, похоже, для меня это не работает, я вижу сообщение, но в то же время он делает представление также о том, что недостаточно проверить, что по крайней мере один флажок установлен?
Onclick запускает оба события, проверку и отправку. Вы можете поместить подающую часть в скрипт проверки, например, и только отправить форму, если ваша проверка прошла успешно.
EDIT: публикация более полного кода
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
</head>
<body>
<script type="text/javascript">
function validate() {
if ($('#checking').is(':checked')) {
$('#frm1').submit();
} else {
alert("You didn't check it! Let me check it for you.");
$('#checking').attr('checked', true);
}
}
</script>
<form name="frm1" id="frm1" method="post" action="next.php" >
<input type="checkbox" value="" class="chk" id="checking"/>
<a href="#" onclick="validate(); return false;" id="add_view"><img src="/submit.png"></a>
</form>
</body>
</html>
Кроме того, вы должны также рассмотреть возможность добавления проверки на стороне сервера, если ее еще нет, поскольку пользователь может легко изменить HTML/JavaScript на вашей странице во время выполнения с такими инструментами, как FireBug, и представить данные, которые в действительности недействительны.
Я предложил в своем первоначальном ответе, что вам нужно "что-то вроде...".
Вот что должно быть полным рабочим решением. Трюк, который нужно было добавить, состоял в том, что validate
должен возвращать true/false, чтобы мы могли решить, следует ли отправлять форму.
<script type="text/javascript">
function validate() {
if (document.getElementById('checking').checked) {
alert("checked");
return true;
} else {
alert("You didn't check it! Let me check it for you.")
return false;
}
}
</script>
<form name="frm1" id="frm1" method="post" action="next.php" >
<input type="checkbox" value="" class="chk" id="checking"/>
<a href="#" onclick="if(validate()) { $(this).closest('form').submit(); } return false;" id="add_view" ><img src="/submit.png"></a>
</form>
Оригинальный ответ: вам, вероятно, что-то нужно в обработчике кликов, что больше похоже на
if (validate()) { $(this).closest('form').submit(); }
Это должно привести к представлению до тех пор, пока предупреждение не будет закрыто. Если вы хотите, чтобы форма не отправлялась, если флажок не был, вы можете вернуть true/false из validate(), и то же самое будет работать.
form.onsubmit
( stackoverflow.com/a/16262814/209103 ) и обычнойbutton
HTML для кнопки ( stackoverflow.com/a/8488022/209103 )?