2011-06-09 82 views
1

我有麻煩使用jQuery Masked Input Plugin 文本後完成事件成功的作品,但如果我粘貼文本到文本框蒙面 - 我不能趕上完成事件。從插件網站的jQuery插件Maskedinput:粘貼不行

例子:

<script type="text/javascript"> 

    jQuery(function ($) { 
     $("#testtext").mask("99/99/9999", { completed: function() { 
      alert("You typed the following: " + this.val()); 
     } }); 
    }); 
</script> 

任何人做過類似的?

回答

3

我結束了:

  1. 結合事件和
  2. 然後讓粘貼VAL()短暫的setTimeout後 -ue (因爲粘貼的數據不當事件被觸發時使其成爲控制)並且
  3. 最後調用與相同的方法完成

// mask fields 
$('#Ssn').mask("999-99-9999", 
    { completed: function() { lookupPersonAsync(this.val()); } } 
); 
// fix paste bug 
$('#Ssn').bind('paste', function() { 
    setTimeout(function() { 
     var ssn = $('#Ssn').val(); 
     if (ssn.length == 11) lookupPersonAsync(ssn); 
    }, 100); 
}); 

有可能是一個簡單的解決方案,但是這似乎簡單,因爲事實證明,它不是那麼容易得到的所有瀏覽器到剪貼板數據。

0

以下是我在粘貼時觸發Completed事件的操作。這可能不是美麗的解決方案,或者是任何方式的傻瓜,但對於我的目的來說,這就足夠了。

此外,我用2個獨立的口罩做了有限的測試,但沒有遇到任何問題。我使用的面具是aa99aaa999(999) 999-9999

我只是更新了粘貼處理程序的綁定事件。所有這些邏輯確保光標的位置> =掩碼的長度,如果是這種情況,假設你已經通過它,它將觸發完成的函數。

.bind(pasteEventName, function() { 
         setTimeout(function() { 
          input.caret(checkVal(true)); 
          if(checkVal(true) >= len && settings.completed){ 
           settings.completed.call(input); 
          } 
         }, 0); 

希望這可以幫助別人。