2011-11-16 72 views
0

我想只允許下列字符輸入到一個文本框被輸入某些字符:通過Z資金和較低的情況下,Ññ和空間防止在文本框

A。的onkeyup上運行以下功能:

FieldOnKeyUp(el) { !(/^[A-zÑñ-\s]*$/i).test(el.value)?el.value 
= el.value.replace(/[^A-zÑñ-\s]/ig,''):null; } 

與我做了什麼不好的事情是,現場還接受以下特殊字符:

`^_ \ ] and [ 

沒有人有這方面的一些智慧?

+0

爲什麼我會被吝嗇? – Mike

回答

2

的問題是在你的正則表達式:

[^A-zÑñ-\s]/ig 
    ^---- problem is here: you need to change to an uppercase Z 

你已經得到了/i忽略大小寫標誌設置,但你也把一個字符範圍的A-z - 即資本從A到小寫ž 。當前被接受的你不想要的額外字符(「[」等))全部位於大寫字母Z和小寫字母a之間。嘗試將其更改爲A-Z,看看會發生什麼。

另外請注意,您的用戶可以通過粘貼輸入無效字符(通過主菜單或右鍵菜單)和關鍵事件處理程序也不會趕上。

+0

是的,我也在Blur上運行它來阻止這些貼紙! ;) – Mike

1

代碼部分更改一些東西一樣如下,看看

FieldOnKeyUp(el) { !(/^[a-zA-ZÑñ-\s]*$/i).test(el.value)?el.value 
= el.value.replace(/[^a-zA-ZÑñ-\s]/ig,''):null; } 

,並沒有得到什麼是您的實際需求。在[]中放入插入符號^將使目標字符串不允許使用字母。但根據你的編碼,我只是修改了不正確的正則表達式模式。