在Javascript中提供数字之间的连字符作为格式

时间:2015-01-25 06:02:39

标签: javascript jquery html5

所以我要求通过在适当的位置提供连字符来格式化9位数字。如果数字是123456789,格式化后必须是123-45-6789。为此,我将maxlength设置为9中的HTML

  <div class="form-group">
            <label class="col-sm-2 control-label labelfont">SSN:</label>
            <div class="col-sm-6">
                <input type="text" class="form-control" placeholder="Enter the SSN" id="SSN" name="SSN" data-bind="value: SSN" onkeypress="return onlyNumbers(event);" maxlength="9">
            </div>
            <label class="col-sm-4 labelfont errorMsg" id="Err_SSN">Enter the SSN</label>
        </div>

在JS中,我有以下代码

var Provider = function () {
    var self = this;
    self.ProviderID = ko.observable("");
    self.SSN = ko.observable("");          
};
var blurred = false; //Prevent reformatting when Tab back in.
$("#SSN").blur(function () {
    if ($(this).val().trim().length == 0) {
        $("#Err_SSN").text("Enter the SSN");
        $("#Err_SSN").show();
        $(this).addClass('borderclass');
    }
    else {
        if (!blurred) {
            $("#Err_SSN").hide();
            var SSN = $("#SSN").val();
            $("#SSN").val(SSN.substring(0, 3) + "-" + SSN.substring(3, 5) + "-" + SSN.substring(5));
            $("#SSN").removeClass('borderclass');
            Provider.SSN($("#SSN").val());
            blurred = true;
        }
    }
});

  $(document).ready(function () {
   ko.applyBindings(new Provider());
   });

上面的代码在我在相关字段中输入9位数后标签输出时,但是你可能已经想到了,如果我重新选择编辑数据,它就不起作用。现在,我知道编辑是没有发生,因为最大长度为9,连字符被视为字符之一。但如果我在字段中允许超过9位数,则该数字可被视为无效。所以,如果你们有更好的方法来实现我的要求,请指导我。

1 个答案:

答案 0 :(得分:1)

您可以在聚焦文本字段时删除连字符:

$("#SSN").focus(function(){
    $(this).val() = $(this).val().replace(/-/g,"");
});

未经测试,但这就是主意。