jQuery addClass не работает при добавлении в переменную объекта this - PullRequest
0 голосов
/ 22 июня 2010

Я пытаюсь добавить класс ошибки в текстовое поле ввода, чтобы показать пользователю, что его ввод недопустим.В событии изменения я получаю ссылку на то, что я предполагаю, это поле ввода и сохраняю его в переменной.Вызов addClass для переменной не работает должным образом.Я активировал код, и $ textBox - правильное текстовое поле, поэтому я не уверен, что мне здесь не хватает.У меня есть много входов, которые имеют класс "edit-budget-local", поэтому мне нужно нацелить измененное текстовое поле.Спасибо.

  $("input.edit-budget-local").change(function () {

    var $textBox = this;

    var newValue = $textBox.value;

    if (newValue.match(/^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/) == null) {

        $textBox.addClass("error");
    }


});

Ответы [ 5 ]

2 голосов
/ 22 июня 2010

Попробуйте

$textBox = $(this);

хотя, кажется, есть ошибка (с точки зрения использования jQuery) на ln 5, где newValue должно быть $textBox.val();

1 голос
/ 22 июня 2010

Это должно работать, если ваш селектор и регулярное выражение верны

$("input.edit-budget-local").change(function () { 
    var textBox = $(this); 
    var newValue = textBox.val(); 

    if (newValue.match(/^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/) == null) { 
        textBox.addClass("error");
    } 
});
1 голос
/ 22 июня 2010

у вас здесь ошибка,

$textBox.addClass("error");

попробуйте вот так,

$("textBox").addClass("error");
0 голосов
/ 22 июня 2010

Возвращаемое "this" не является объектом jQuery. Попробуйте заменить строку

  var $textBox = this;

с

  var $textBox = $(this);
0 голосов
/ 22 июня 2010

Вам нужно изменить эту строку: var $textBox = $(this);, чтобы вы фактически кэшировали копию объекта jQuery, а не только входные данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...