在maxlength激活时输入,即使达到maxlength也会触发

时间:2015-02-03 09:35:09

标签: javascript jquery html

"在输入时,当maxlength处于活动状态时触发即使达到maxlength",它也是on输入事件的经典用法。当达到maxlength时我可以将事件设置为false,但我发现这个非常干净。

在达到maxlength时是否有其他方法不触发onInput?也许另一个事件,onChange显然不起作用,因为它需要失去输入焦点。

一个简单的jsfiddle来显示我的问题" : fiddle http://jsfiddle.net/ysC7L/195/ 在第三个文本框中,我希望我的onInput(或其他)不会触发。

1 个答案:

答案 0 :(得分:1)

似乎您可能需要存储对输入的先前值的引用。如果要在较大函数范围内的输入上设置事件处理程序,则可以将输入的先前值存储在变量中,并将其与当前值进行比较。

如果要在全局上下文中设置这些事件处理程序,则可能希望避免将以前的值存储为全局变量。相反,您可以在HTML输入元素本身上设置一个属性,以跟踪以前的值。这是一个例子:

$('#input-5').on('input', function() {
    var self = $(this),
        prevValue = self.attr('data-prev-value') || '',
        currentValue = self.val(),
        maxLength = self.attr('maxlength');

    if (prevValue.length !== currentValue.length || prevValue.length !== maxLength) {
        // do processing
    }
    self.attr('data-prev-value', currentValue);
});

请参阅此jsfiddle:http://jsfiddle.net/ysC7L/203/