添加到“this”对象变量时,jQuery addClass无法正常工作

时间:2010-06-22 14:14:12

标签: javascript jquery css

我正在尝试向输入文本框添加错误类,以向用户显示其输入无效。
在更改事件中,我得到一个引用,我认为是输入字段并将其存储在变量中。
在变量上调用addClass不能按预期工作。我已经发现代码和$ textBox是正确的文本框,所以我不确定我在这里缺少什么。我有很多输入都有“编辑 - 预算 - 本地”类,所以我需要定位已更改的文本框。感谢。

  $("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 个答案:

答案 0 :(得分:2)

尝试

$textBox = $(this);

虽然在ln 5处似乎存在一个错误(就使用jQuery而言),其中newValue应为$textBox.val();

答案 1 :(得分:1)

你这里有错误,

$textBox.addClass("error");

尝试这样,

$("textBox").addClass("error");

答案 2 :(得分:1)

如果您的选择器和正则表达式正确

,这应该有效
$("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");
    } 
});

答案 3 :(得分:0)

您需要更改此行:var $textBox = $(this);,以便您实际缓存了jQuery对象的副本,而不仅仅是输入。

答案 4 :(得分:0)

返回的"this"不是jQuery对象。尝试更换行

  var $textBox = this;

  var $textBox = $(this);