我在使用jQuery时遇到问题Masked Input Plugin 文字输入成功有效,但如果我粘贴文字进入屏蔽文本框 - 我无法捕捉已完成事件。
来自插件网站的示例:
<script type="text/javascript">
jQuery(function ($) {
$("#testtext").mask("99/99/9999", { completed: function () {
alert("You typed the following: " + this.val());
} });
});
</script>
有人做过类似的事吗?
答案 0 :(得分: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);
});
可能有一个更简单的解决方案,但这似乎最简单,因为事实证明在所有浏览器中获取剪贴板数据并不容易。
答案 1 :(得分: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);
希望这可以帮助别人。