jQuery использовать .live с плагином jquery-keyfilter - PullRequest
0 голосов
/ 06 июля 2010

Я использую плагин jquery-keyfilter для маскировки текстовых полей ввода. Однако текстовые поля добавляются на страницу динамически, и я не могу понять, как применить к ним фильтр ключей.

Я пытался

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

Также

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

Кай: комментарий помогает, но, похоже, моя проблема все еще не решена

Я хочу такой ключевой фильтр

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

, который будет принимать только значения валют / денег, но кажется, что jquery-keyfilter не работает с этим регулярным выражением. Это то, что я делаю неправильно, или я должен посмотреть на использование другого плагина или просто написать его сам?

Ответы [ 2 ]

3 голосов
/ 06 июля 2010

«keyfilter» не является событием, и вы НЕ можете использовать live ().
Согласно API плагина, оно должно быть

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

$('#myelement').keyfilter(/[\dA-F]/); 
0 голосов
/ 21 июля 2010

Ниже решение работает для не первого символа

  
$("#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})?)$/);  
});  
...