тест, если ввод формы – это целое число 1 или 2 цифры с jquery и php

У меня есть форма, которая имеет пять полей, для которых установлено значение 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 ();)

Related of "тест, если ввод формы – это целое число 1 или 2 цифры с jquery и php"

Тестирование, если строка содержит только одну цифру или две цифры, в 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 ();)