6

達成しようとしていた、このフォーマットの自動ダッシュXXX-XXX-XXXX

これが私がこれまでに持っているものです:

$('.telnumber').keyup(function() {
  var foo = $(this).val().split("-").join(""); // remove hyphens
  foo = foo.match(new RegExp('.{1,3}', 'g')).join("-");
  $(this).val(foo);
});

最初の 2 ブロックは問題ありませんが、最後のブロックを 4 桁に制限するにはどうすればよいですか?

ここまで3桁ならまだオートダッシュです。

私はREGEXが苦手なので、アイデアをいただければ幸いです。

4

5 に答える 5

4
foo = foo.match(new RegExp('.{1,4}$|.{1,3}', 'g')).join("-");
于 2013-10-01T09:06:24.563 に答える
0

@Anirudhaの答えから構築します。

他のユーザーがカーソルについて質問しているのを見かけますが、ここで話題から外れていたら申し訳ありません。

電話認証機能をお探しの方へ:

@Anirudha の正規表現を .keyUp() の代わりに .on('input') に配置すると、カーソルの問題が解決されます (したがって、何かが変更された場合にのみ値を更新します)。スライスして 10 桁の数字に制限することもできます。

$('.telnumber').on('input', function() {
  var foo = $(this).val().split("-").join("").slice(0,10); // remove hyphens
  foo = foo.match(new RegExp('.{1,4}$|.{1,3}', 'g')).join("-");
  $(this).val(foo);
});
于 2017-02-21T21:46:17.107 に答える
0

すでに jQuery を使用しているため、次の jQuery プラグインを確認することをお勧めします: http://digitalbush.com/projects/masked-input-plugin/

于 2013-10-01T09:09:16.377 に答える
0

最初の回答のように正規表現を追加するだけで、次の結果が得られました: xxx-xxx-xxx-xxx-xxx...

これは続きました。:(

したがって、私はより優れた完全に機能するソリューションを見つけました。'maxlength=12' を入力要素に追加するだけです!! フィドルリンクをチェックアウトしてください:

http://jsfiddle.net/juspC/218/

<input type="text" class="telnumber" maxlength="12" />

$('.telnumber').keyup(function() {
    foo = $(this).val().split("-").join(""); // remove hyphens

        foo = foo.match(new RegExp('.{1,4}$|.{1,3}', 'g')).join("-");

        $(this).val(foo);

    });
于 2014-05-08T08:53:06.813 に答える