我消毒的輸入欄和手動獲取和設置在該過程中插入位置。對於一些抽象的,這裏的基本思想是:如何替換正則表達式中的許多字符?
<input type="text" onkeyup"check(this)">
和JavaScript ...
function check(element) {
var charPosition = getCaretPosition(element);
$(element).val(sanitize($(element).val()));
setCaretPosition(element, charPosition);
}
function sanitize(s) {
return s.replace(/[^a-zA-Z0-9\s]/g, '');
}
這是工作除了當一個字符不會真正得到消毒罰款,我的插入位置是關閉的一個。基本上我想辦法,看看是否的sanitize功能實際上已經取代了字符(以及在什麼指數)所以後來我在必要時調整charPosition。有任何想法嗎?
如果您已經使用jQuery,沒有理由突然附加你的事件處理程序。相反,你應該在你的JavaScript中附加onkeyup甚至處理程序。 – 2010-03-17 21:32:25
其實,有一個原因。這是一個大的web應用程序針對IE6(不幸),有一個巨大的性能擊中的jQuery的document.ready(在一些網頁上4+秒)。所以我試圖儘可能地從document.ready中取出儘可能多的東西。 (此外,這是在需要的JavaScript內部網應用程序,所以突出性不是問題) – macca1 2010-03-18 00:56:55