在android2.3.3上使用jquery进行ssn掩码

时间:2012-03-01 22:28:22

标签: android cordova jquery-mobile

我正在尝试提供一个掩码,使用户能够以999-99-9999的格式输入ssn。我尝试使用蒙面输入插件from digital bush。这适用于chrome和safari但在android上不起作用。

问题:输入数字时,直到123-一直正常,当我输入接下来的2位数时,它会反转序列。例如:如果我输入123-45,则显示为123-54,并且每个分隔符都会继续此问题。例如:如果我输入123-45-6789,则显示为123-56-8974

我尝试编写自己的代码,如下所示处理keypress和keyup,但仍然遇到同样的问题。有任何人在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;
}

2 个答案:

答案 0 :(得分:0)

如果您只想在键入时隐藏字符,可以使用

<input type="password">

答案 1 :(得分:0)

已在屏蔽输入jquery插件中修复此问题。更新到最新版本应解决此问题。