Ssn mask с jquery на android2.3.3

Я пытаюсь предоставить маску, чтобы пользователь мог ввести ssn в формате 999-99-9999. Я попытался использовать скрытый входной плагин из цифрового куста . Это отлично работает на хроме и сафари, но не работает на Android.

Проблема: при вводе чисел это нормально до 123, и когда я ввожу следующие 2 цифры, он меняет последовательность. Например: если я вхожу 123-45, он отображается как 123-54, и эта проблема продолжается для каждого разделителя. Например: если я вхожу 123-45-6789, он отображается как 123-56-8974

Я попытался написать свой собственный код, как показано ниже, для обработки нажатия клавиш и нажатия клавиш и по-прежнему получить ту же проблему. Кто-нибудь имел успех с маскировкой ввода на Android? Какая альтернатива?

Вот полный html с локальными ссылками на код:

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title> test ground</title> <!-- JQuery specific --> <script type="text/javascript" src="libs/jQuery/jQuery.min.js" ></script> <script type="text/javascript" src="libs/jQuery/mobile/jquery.mobile.min.js"></script> <link rel="stylesheet" href="libs/jQuery/mobile/jquery.mobile.min.css" /> <script src="javascript/jquery.maskedinput-1.3.js" type="text/javascript" charset="utf-8"></script> <!-- Application specific --> <script type="text/javascript"> $(document).bind('mobileinit',function(){ // $.mobile.page.prototype.options.addBackBtn = true; // $.mobile.page.prototype.options.backBtnText = "Previous"; // $.mobile.page.prototype.options.backBtnTheme = "b"; }); $("[data-role='page']").live("pageshow", function(event) { $("#primaryssn").mask("999-99-9999"); }); </script> </head> <body> <!-- ################### PAGE: launchpage ################### --> <div data-role="page" id="launchpage"> <div id="header" data-role="header" data-position="fixed" > <div id="headerlogo" > </div> <h1 class="appTitle" >My App</h1> </div> <div data-role="content" > <div class="content-primary"> <p> Welcome to my app </p> <br/> </div> <!-- Primary SSN --> <div data-role="none"> <label name="lblprimaryssn" for="primaryssn" > SSN</label> <input type="text" name="primaryssn" id="primaryssn" value="" /> <span class="error" id="primaryssnerror"> Please enter your SSN as (999-99-9999) </span> </div> <br/> </div><!-- /content --> </div><!-- /launch page --> </body> </html> 

Вот код, который я использовал для маскировки ввода на основе нажатия клавиши на клавиатуре:

 // _v is value passed in on keyup in this input field // _d indicates if the key is a backspace to delete character var setSSN = function (_v, _d){ var v = $.trim(_v); if ( !_d ){ if ( v.length <= 3 ) { var validformat1=/^\d{1,3}$/ ; if ( validformat1.test(v)) { if ( v.length == 3 ) v = v + '-'; return v; } } else if ( v.length >3 && v.length <= 6) { var validformat2=/^\d{3}\-\d{0,2}$/ ; if ( validformat2.test(v)) { if ( v.length == 6 ) v = v + '-'; return v; } } else { var validformat3=/^\d{3}\-\d{2}\-\d{0,4}$/ ; if ( validformat3.test(v)) { if ( v.length == 6 ) v = v + '-'; return v; } } v = v.substring(0,v.length-1); return v; } else { if ( 3 == v.length || 6 == v.length ) { v = v.substring(0,v.length-1); } } return v; } 

Если вы просто хотите скрыть символы по мере их ввода, вы можете использовать

 <input type="password"> 

Эта проблема была исправлена ​​в подключенном плагине jquery. Обновление до последней версии должно решить эту проблему.