【发布时间】:2014-04-08 14:39:02
【问题描述】:
以下 sn-p 对input 执行我想要的操作,即,它删除所有非字母数字字符,转换为大写,并保留光标位置。
element = $(element);
element.keyup(function() {
var x = element.val();
var y = x && x.toUpperCase().replace(/[^A-Z\d]/g, '');
if (x===y) return;
var start = this.selectionStart;
var end = this.selectionEnd + y.length - x.length;
element.val(y);
this.setSelectionRange(start, end);
});
我将这个 sn-p 放在指令的 link 中,它可以正常工作.... 大部分情况下。
问题在于angular 模型在应用更改之前看到了值。我试图谷歌如何使用$apply 或$digest 或其他任何东西,但没有任何效果。
(其实我是有办法做到的,但是后来内容被重新渲染了,我失去了位置。我无法重现它,但它还是不够好。)
【问题讨论】:
标签: jquery angularjs validation