在maxLength上调用ajax - 不在CTRL V上更新(粘贴)

时间:2012-08-28 14:52:18

标签: jquery ajax input maxlength

//show city/state on input maxlength
$("input#billZipCode").live("keyup", function( event ){

    if(this.value.length == this.getAttribute('maxlength')) {
        if(!$(this).data('triggered')) {
            // set the 'triggered' data attribute to true
            $(this).data('triggered', true); 
            if ($(this).valid() == true ) { zipLookup(this, "USA"); } 
        }
    } else {
    $(this).data('triggered', false);
    }

});

函数zipLookup执行ajax调用并填充字段。

以上适用于用户键入zipcodes时 - 但是,如果用户输入邮政编码然后粘贴(CTRL V)新的zipcode值,则该功能不会再次触发。

1 个答案:

答案 0 :(得分:0)

您可以捕获粘贴事件:

$(document).on('change keyup paste', '#billZipCode', function(){
   // do something
});​​​​​​

jquery使用的onpaste回调参考:https://developer.mozilla.org/en-US/docs/DOM/element.onpaste

请注意,正如the documentation中所述,这不适用于IE8:您必须将paste事件直接附加到元素:

  

在Internet Explorer 8及更低版本中,粘贴和重置事件不会   气泡。这些事件不支持与委托一起使用,但是   它们可以在事件处理程序直接附加到时使用   生成事件的元素。

附注:

  • 使用“#billZipCode”而不是“input#billZipCode”
  • 使用on,而不是live(已弃用)