0

我有以下代码在运行时更改验证类

$("#txtNewAttributes").focusout(function () {
        var attributeTextBox = $("#txtNewAttributes").val()
        if ($.trim(attributeTextBox) == "Height")
            $(txtNewValues).removeClass('alphaonly').addClass('numbersonly');
        if ($.trim(attributeTextBox) == "IATA" || $.trim(attributeTextBox) == "IACA")
            $(txtNewValues).removeClass('numbersonly').addClass('alphaonly');
    });

正如我在萤火虫中看到的,预期的类名会发生变化。但是没有应用Numberonly类,并且该函数无法正常工作,因为它超出了 SCope 我认为它在 diff 文件中作为下面的函数

function AllowOnlyNumbers() {
    $('.numbersonly').each(function (e) {
        $(this).keydown(function (e) {
            var key = e.charCode || e.keyCode || 0;
            return (key == 8 || key == 9 || key == 46 || (key >= 37 && key <= 40) ||
                     (key >= 48 && key <= 57) || (key >= 96 && key <= 105));
        });
    });
}

如何在 Jquery 的focusout Func 中访问上述函数?

谢谢

4

1 回答 1

1

如果我理解正确,您首先注册keydown处理程序,然后根据输入的值txtNewAttributes设置txtNewValues. 这确实不起作用,因为keydown处理程序只会在您注册时应用于与您的选择器匹配的元素。

为现在和将来匹配当前选择器的所有元素附加事件处理程序,请使用jQuery.live().

$('.numbersonly').live('keydown', function (e) {
    var key = e.charCode || e.keyCode || 0;
    return (key == 8 || key == 9 || key == 46 || (key >= 37 && key <= 40) ||
           (key >= 48 && key <= 57) || (key >= 96 && key <= 105));
});
于 2013-03-05T07:13:20.243 回答