2015-11-23 4 views
-2

Пожалуйста, у меня есть код JQuery, с которого я хочу сделать несколько вещей. У меня есть форма с кучей текстовых полей. Я хочу проверить каждое текстовое поле, чтобы разрешить только номера. Также отображать ошибку, где не номер.Как выбрать и установить несколько текстовых полей в jQuery

var validateForm = function(frm){ 
     var isValid = true; 
     resetError(); 

     $(":text").each(function(variable){ 
      console.log("The variable is" , variable); 
      if(!isNormalInteger(variable.val)) 
      { 
       $("#error"+variable.id).text("Please enter an integer value"); 
       isValid = false; 
      } 
     }); 

     if(!isValid) 
      return false; 

    }; 

Приведенное выше не выполнено. Когда я печатаю переменную на моей консоли, я получал числа 0 - 9. Мои текстовые поля, где еще не пуста, возвращают числа. Я попробовал variable.val() все еще не удалось и возвратил числа. Я изменил свой выбор на

$("input[type=text]", frm).each(); 

Где моя форма моя форма выбрана id. Он также потерпел неудачу. Ниже приведен пример моего ярлыка html и текстового поля. У меня есть около десяти из них

<div class="grid-grid-8"> 
    <input class=" text" id="id" name="name" type="text"> 
    <br> 
    <p class="hint">Once this limit is reached, you may no longer deposit.</p> 
    <p class="errorfield" id="errorMAXCASHBAL"></p> 

Пожалуйста, как я выбираю их правильно? Кроме того, моя функция сброса выше также возвращает инкрементные целые числа для значения. Свойство p имеет класс errorField, и я хочу установить свойство text. Как мне это достичь? Раньше я пробовал имя класса только $(.errorField). Он также потерпел неудачу. Любая помощь будет оценена по достоинству.

var resetError = function(){ 
     //reset error to empty 
     $("p errorfield").each(function(value){ 
      console.log("the val", value); 
      //value.text() = ''; 
     }); 
    }; 

//filter non integer/numbers 
function isNormalInteger(str) { 
     return /^\+?\d+$/.test(str); 
    } 
+0

Не могли бы вы добавить jsFiddler, чтобы проверить это? – wilsotobianco

+0

Что делает «isNormalInteger»? – mplungjan

+0

@mplugjan Он фильтрует текст, чтобы гарантировать, что пользователь вводит только интергеры или цифры. Я обновил свой код, который вы можете видеть. – brickleberry

ответ

0

Вы используете .each неправильно, потому что первый параметр является индексом, а второй элемент. Проверьте documentation. Кроме того, правильный селектор для resetError является: p.errorfield

Таким образом, вы должны изменить свой код, чтобы выглядеть примерно так:

var resetError = function(){ 
    $("p.errorfield").each(function (idx, element) { 
     $(element).text(""); 
    }); 
}; 

С этим, я полагаю, вы можете зафиксировать верхнюю функцию, а также. ;)

1

Основная проблема - ваши селекторы в javascript. И поскольку laszlokiss88 заявлял неправильное использование функции .each().

Вот рабочий пример кода: jsFiddle в этом примере все .each() функции используют $(this) селектор внутри вместо индекса и значение

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