У меня есть форма, которая имеет пять полей, для которых установлено значение maxlength = "2".
В основном, я хочу, чтобы единственные значения, которые могут быть введены как одномерные, так и двухзначные, поскольку вычисления выполняются в этих полях до того, как значения хранятся в базе данных.
Есть ли какой-либо jquery, который не позволит пользователю даже ввести значение, которое не является целым числом?
Также будет лучшим способом проверить это как с jquery, так и с php? Я нашел несколько способов сделать это, но мне нужно убедиться, что он безопасен, избегая символов, -2, .1 и т. Д.
РЕШИТЬ
Для используемой части php я использовал
if(!ctype_digit($_POST['value']))
который допускает только положительные целые числа
И для javascript
$('.inputQuantity').keyup(function(){ this.value = this.value.replace(/[^0-9\.]/g,''); });
который удаляет любую запись, внесенную в поле ввода, которое не является числом.
Оба выше работают, хотя я думаю, что некоторые люди предпочитают использовать focusout (function (), а не keyup (function ();)
Тестирование, если строка содержит только одну цифру или две цифры, в PHP, может выполняться с регулярным выражением:
// $string is supposed to contain your data -- maybe obtained from $_POST['field_name'] if (preg_match('/^\d{1,2}$/', $string)) { // it's one or two digits }
В основном, эти тесты для:
^
\d
\d{1,2}
$
И, в Javascript, я полагаю, вы могли бы использовать одно и то же регулярное выражение:
// str is supposed to contain your data if (/^\d{1,2}$/.test(str)) { // it's one or two digits }
$("input[maxlength=2]").change(function(){ var val = $(this).val(); $(this).val(parseInt(val)); });
Не проверял.
Один теоретический новомодный способ обеспечить это:
<input type="number" name="number1" maxsize="2" >
Но для старых браузеров вам все еще нужен Javascript:
<input name="num2" onchange="this.value = this.value.replace(/\D/, '')">
В любом случае, нет возможности избежать проверки серверной стороны.
Я специально создал для вас функцию на PHP –
<form action="" method="POST"> <input type="textbox" name="number" /> <input type="submit" value="Check" /> </form> <?php $i = $_POST['number']; function check_number_digits($i) { $func = preg_replace('/[^0-9]/', '', $i); if($_POST) { if(!$func) { echo 'You entered no Number!'; } else { return strlen($func); } } else { //Can do anything! } } echo check_number_digits($i); ?>
Я тестировал и отлично работает! Скажите мне, полезно ли это или нет.
Надеюсь, это сработало!
РЕШИТЬ
Для используемой части php я использовал
if(!ctype_digit($_POST['value']))
который допускает только положительные целые числа
И для javascript
$('.inputQuantity').keyup(function(){ this.value = this.value.replace(/[^0-9\.]/g,''); });
который удаляет любую запись, внесенную в поле ввода, которое не является числом.
Оба выше работают, хотя я думаю, что некоторые люди предпочитают использовать focusout (function (), а не keyup (function ();)