2016-12-23 2 views
0

У меня есть два текстовых полей (полей ввода), такие как следующие:JQuery предел регулярных выражений пользователю вводить целые числа и числа с плавающей точкой значения

<input type="text" class="txtmin" placeholder="Minimum price"> 

      <input type="text" class="txtmax" placeholder="Maximum price"> 

Я пытаюсь метод, как это, чтобы предотвратить пользователю вводить следующие значения:

  1. Если пользователь ничего не ввел ни в одно из этих двух значений, он может продолжить.

  2. Если пользователь ввел что-то в txtmin текстовое поле, но не вошел ничего в текстовый максимум, только txtmin одобряется

  3. Как 2, но наоборот происходит

  4. 2 и 3 проверки на следующем основании:

    • Если пользователь вводит что-либо помимо целочисленного числа или числа с плавающей запятой, отображается ошибка.

Так, например, когда я вхожу: 1 или 2,50 или 1,00 это нормально ...

Количество, которое запятая в нем не может быть разрешено.

Так что я попробовал, как следующее:

$(".btnGo").click(function() { 
      var r = new RegExp("/^[+-]?\d+(\.\d+)?$/"); 
      var min = $('.txtmin').val(); 
      var max =$('.txtmax').val(); 
      if ($('.txtSearch').val() == "") { 
       ShowMessage("All fields are required"); 
       return; 
      } else if ($('.txtmin').val() != "") { 
       if (!r.test(min)) { 
        ShowMessage("Entry only number for minimum price!"); 
        return; 
       } 
      } 
      else { 
       PostAndUpdate($('.txtSearch').val(), $('input[name=type]:checked').val(), $('input[name=shipping]:checked').val(), $('input[name=condition]:checked').val(), $('.txtmin').val(), $('.txtmax').val()); 
      } 
     }); 

Но, к примеру, когда я не оставляю оставить значение txtmin пустым, я ввожу:

< < 1,25 <

Я по-прежнему получаю ошибку по какой-то причине ???

Entry only number for minimum price 

Что я здесь делаю неправильно?

ответ

1

Возьмите цитаты из своего регулярного выражения.

var r = new RegExp(/^[+-]?\d+(\.\d+)?$/); 

Последующие меры: Вы можете либо объявить регулярное выражение, ограниченное /.../ или кавычками, но не оба. Если вы используете кавычки, вам нужно следовать нормальным правилам escape-кода javascript и использовать двойную обратную косую черту. Вам также не нужно использовать new RegExp, если вы используете слэш. Все они действительны и эквивалентны.

var r = new RegExp(/^[+-]?\d+(\.\d+)?$/); 
var r = new RegExp("^[+-]?\\d+(\\.\\d+)?$"); 
var r = /^[+-]?\d+(\.\d+)?$/; 

И нет, это не позволит номера с запятыми.

+0

О, боже, ты должен шутить со мной, только это была проблема? Благодаря !!! :) P.S. Соответствует ли этому регулярному выражению критериям, о которых я упоминал выше, например, он не позволит номера с запятой? – User987

+0

звучит хорошо. Постскриптум Как я могу расширить это регулярное выражение так, чтобы у поля не было значения, но если это произойдет, я бы проверил его в соответствии с регулярным выражением (без использования инструкции extra if). – User987

+0

Используйте '\ d *' (ноль или многие times) вместо '\ d +' (один или несколько раз) - '^ [+ -]? \ d * (\. \ d +)? $' –

Смежные вопросы