2012-03-01 33 views
4

我试图提供一个掩码来使用户能够以999-99-9999的格式输入ssn。我试图使用蒙面输入插件from digital bush。这适用于Chrome和Safari浏览器,但不适用于Android。在android2.3.3上使用jquery的ssn掩码

问题:输入数字时,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> 

下面是我用于基于KEYUP击键屏蔽输入代码:

// _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; 
} 
+0

我有这个相同的问题。一直无法找到解决方案。 – pdusen 2012-06-08 19:06:03

回答

0

如果你只是想隐藏字符,因为他们键入你可以使用

<input type="password"> 
0

此问题已被修复在蒙面输入jquery插入。更新到最新版本应该可以解决这个问题。