У меня есть такая форма, которая позволяет вводить любое количество продукта от 1-10:
<form method='post' action='cart.php'>
<input type='number' name='quantitychange' size='2' min='1' max='10' value=".$_SESSION["itemsSelected"][$i][1].">
<input type='hidden' name='ProductID' value=".$_SESSION["itemsSelected"][$i][0].">
<input type='submit' value='Update'>
</form>
И другая форма (кнопка), чтобы отобразить выбор режимов оплаты:
<form action='cart.php' method='post'>
<input type='hidden' name='next'>
<input type='submit' value='Select Payment Mode'>
</form>
Что я хочу, так это то, что когда пользователь ничего не вводил (1-я форма), например. null или 0, я хочу отобразить окно предупреждения, в котором говорится: «Количество продукта не может быть нулевым или 0».
Вот мой код, который:
if (isset($_POST['next'])) {
if ($_POST['quantitychange']==null || $_POST['quantitychange']==0) {
?>
<script type='text/javascript'>
alert('Product quantity can't be null or 0.');
</script>
<?php
}
else {
echo "
//Payment modes here
";
}
}
Ошибка в том, что даже тогда, когда пользователь вводит ставку количество. От 1 до 10, оно все еще отображает предупреждение. Любая помощь? Спасибо.
Кстати, тип ввода «номер» работает только в браузере Google Chrome.
+1. Поскольку вы уже используете javascript, вы можете просто проверить, пусто ли поле количества наBlur, а затем пользователю не нужно отправлять всю форму и ждать загрузки страницы-получателя, прежде чем получать уведомление об ошибке. – octern
Мне нравится ставить проверку на кнопку отправки (или сделать кнопку отправки просто вызовом функции на что-то вроде submitMyNumberForm), и тогда функция может выполнять любое пользовательское взаимодействие, которое вам нравится. Если вы onBlur(), то если они ненавязчиво наводят указатель мыши на них, они кричат. Не круто!Кроме того, форма не перезагружается, когда функция считает данные недействительными и возвращает false, это как если бы кнопка не была нажата вообще, и посетитель страницы все еще наблюдает за ней. Я буду использовать jQuery или javascript, чтобы сосредоточиться на этом поле ввода и/или сделать его красным. –
Вы говорите, что перемещение указателя над полем ввода (при перетаскивании?) Заставляет его получать фокус? Раньше такого никогда не было. Я думал, что Блэр произойдут только в том случае, если они ранее нажимали или иным образом перемещались в поле. – octern