0

私は現在、以下のスクリプトを使用して任意の形式の情報を取得し、番号を引き出してダッシュが含まれる電話番号を作成しています。ただし、誤ってフィールドをクリックすると、何も貼り付けたり入力したりしなくても、ダッシュが2つ表示されます。JSには、何かが貼り付けられた場合にのみダッシュを追加するという言い方がありますか?面倒な理由は、2つの検索フィールドがあり、一方を使用する場合は、もう一方を空白にする必要があるためです。したがって、ダッシュが2つある場合は、それらを削除して同じフィールドにEnterキーを押す必要があります。そうしないと、ダッシュが再度追加されます。

私はあなたが持っているかもしれないどんな助けにも感謝します。

<SCRIPT LANGUAGE="JavaScript">
    function addDashes(f)
    {
        f.value = f.value.replace(/\D/g, '');
        f.value = f.value.slice(0,3)+"-"+f.value.slice(3,6)+"-"+f.value.slice(6,15);
    }
</SCRIPT>
4

2 に答える 2

2

私は次のようなもので行きます:

function addDashes(f) {
    f.value = f.value.replace(/(\d{3})-?(\d{3})-?(\d{9})/, '$1-$2-$3');
}

そこに15桁の数字がある場合にのみ何かを行います(おそらくダッシュがすでに配置されています)。

于 2012-11-19T18:26:52.967 に答える
0

これが必要かどうかはよくわかりませんが、これはフォーマットする前に実際に何かがあるかどうかを確認するだけです:

function addDashes(f)
{
    var oldVal = f.value.replace(/\D/g, '');
    if (oldVal.length) {
        f.value = oldVal.slice(0,3) + "-" + oldVal.slice(3,6) + "-" + oldVal.slice(6,15);
    }
}

編集:

あなたのコメントに基づいて、検証を行うと役立つかもしれないと思いました。有効な電話番号であることを確認するためにサーバー側で何かを行っているかどうかはわかりませんが、ユーザーが入力したばかりの場合にダッシュを追加しないように、少し検証を行うと役立つ場合がありますスペース。

まず、長さを確認する前に、数値以外の値を削除します。それを行うために上記のコードを更新しました。

次に、長さをチェックします。数字が 9 桁以上の長さの場合にのみ、ダッシュを追加したい場合があります。チェックする長さを決めることができます。その場合、次を追加します。

if (oldVal.length >= 9) { ...

それはすべて、このフィールドを検証しているかどうか/どのように検証しているかによって異なります。

于 2012-11-19T18:04:19.420 に答える