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

在Javascript中提供数字之间的连字符作为格式,javascript,jquery,html,Javascript,Jquery,Html,因此,我需要通过在适当的位置提供连字符来设置9位数字的格式。如果数字是123456789,则在格式化后必须是123-45-6789。为此,我在HTML中将maxlength设置为9 <div class="form-group"> <label class="col-sm-2 control-label labelfont">SSN:</label> <div class="col-sm-6">

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

  <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>

当我在相关字段中输入9位数字后进行tab out时,上面的代码起作用,但正如您可能已经了解到的,如果我重新进行tab以编辑数据,则不起作用。现在,我知道编辑不会发生,因为最大长度为9,连字符被视为字符之一。但是如果我在字段中允许超过9位,该数字可能被视为无效。因此,如果你们有更好的方法来满足我的要求,请指导我。

当您重新关注文本字段时,可以删除连字符:

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

未经测试,但这就是我的想法。

我不得不对代码进行一些更改,它成功了。非常感谢您为我指明了正确的方向。有没有办法做到这一点,同时保持连字符集中在一起。我猜没有,但我想知道答案,如果你愿意的话。可能使用jQuery掩码插件:我以前用过这个,但已经有一段时间了。不过,你应该做这个把戏!
$("#SSN").focus(function(){
    $(this).val() = $(this).val().replace(/-/g,"");
});