2010-07-06 70 views
0

我使用jquery-keyfilter插件來屏蔽文本框輸入。 但是,文本框被動態添加到頁面中,我無法弄清楚如何將密鑰過濾器應用到它們。jQuery與jquery-keyfilter插件一起使用.live

我已經試過

$('#myelement').live('keyfilter', myFunction); 

而且

$('#myelement').live('keyfilter', /regex/); 

凱:評論幫助,但似乎我的問題仍然沒有得到解決

我想這樣

(/^\$?(\d{1,3},?(\d{3},?)*\d{3}(.\d{0,3})?|\d{1,3}(.\d{2})?)$/); 
一個keyfilter

t帽子只會接受貨幣/金錢價值,但它似乎像jquery-keyfilter不適用於這個正則表達式。這是我做錯了什麼,或者我應該看看使用另一個插件或只是自己編碼?

+0

好似乎像keyfilter需要整個字符串匹配,所以我上面的正則表達式不會工作,如果我開始輸入$。所以我必須得到這個正則表達式/[\\\\\\\\\\\\\\\\\],它只允許某些字符,但它們可以按任意順序輸入。這將做,直到我寫一個功能,以做我需要的東西 – Daveo 2010-07-06 04:20:14

回答

3

「keyfilter」不是一個事件,你不能使用live()。
根據插件的API,它應該是

$('#myelement').keyfilter(function(c) { return c != 'a'; }); 

$('#myelement').keyfilter(/[\dA-F]/); 
+0

謝謝我沒有意識到你只能使用現場活動 – Daveo 2010-07-06 04:08:55

0

以下解決方案適用於非第一個字符

 
$("#myelement").live("keypress", function(){ 
    $(this).keyfilter((/^\$?(\d{1,3},?(\d{3},?)*\d{3}(.\d{0,3})?|\d{1,3}(.\d{2})?)$/); 
}); 

以下解決方案適用於輸入字段已經點擊

 
$("#myelement").live("click", function(){  
    $(this).keyfilter((/^\$?(\d{1,3},?(\d{3},?)*\d{3}(.\d{0,3})?|\d{1,3}(.\d{2})?)$/); 
}); 
+0

這是行不通的,在這裏看到 http://jsbin.com/esezi/edit它不會允許我自己輸入一個$符號或用逗號在這裏輸入一個逗號http://regexr.com?2rqsu 我現在使用/[\\\\\\\\\\\\\\\\\\\\\'只需使用jQuery驗證插件和最終的正則表達式,以便當領域失去焦點時。當然,我可以寫一個正則表達式來完成我想要的按鍵,但呃。維護時間太長而且討厭 – Daveo 2010-07-22 03:12:55