2010-07-06 7 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

답변

3

"keyfilter"는 이벤트가 아니며 live()를 사용할 수 없습니다.
플러그인 API에 따르면,이 솔루션 아래

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

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

감사합니다. 이벤트에만 라이브를 사용할 수 있다는 것을 깨닫지 못했습니다. – Daveo

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 나는 /[\d\$\,\.]/ 및 I을 사용하여 키 입력을 위해 지금 일하고 있습니다 필드가 포커스를 잃을 때 최종 정규식과 함께 jQuery 유효성 검사 플러그인을 사용하십시오. 물론 내가 키 누르기에서 원하는 것을 정확히 할 수있는 정규 표현식을 작성할 수는 있지만 어. 유지하기에는 너무 길고 지저분 할 것입니다. – Daveo

관련 문제