17

最大長が10の入力テキストフィールドがあります。このフィールドはオーストラリアの電話番号(10桁)用です。電話番号は通常、次の構文に分割されます

12 12345678

誰かが上記をコピーして私の入力フィールドに貼り付けると、明らかに最後の桁が省略され、スペースが保持されます。

入力ボックスに貼り付ける直前にスペースを削除する方法はありますか?または、別の回避策はありますか?

前もって感謝します。

4

4 に答える 4

15

これはあなたのために働くはずです:

HTML

<input type="text" id="phone" maxlength="10" />​

JavaScript

var phone = document.getElementById('phone'),
    cleanPhoneNumber;

cleanPhoneNumber= function(e)
{
 e.preventDefault();
 var pastedText = '';

 if (e.clipboardData && e.clipboardData.getData)
 {// Standards Compliant FIRST!
  pastedText = e.clipboardData.getData('text/plain');
 }
 else if (window.clipboardData && window.clipboardData.getData)
 {// IE
  pastedText = window.clipboardData.getData('Text');
 }

 this.value = pastedText.replace(/\D/g, '');
};

phone.onpaste = cleanPhoneNumber;

フィドル: http: //jsfiddle.net/y6TYp/6/

更新nnnnnnは、オーストラリアの電話番号に関して素晴らしいポイントを持っていました。更新は正規表現を置き換えます。

于 2012-08-14T00:19:52.457 に答える
2

この関数はそれを行うのに役立ちます:

function removeSpaces(string) {
 return string.split(' ').join('');
}

または、jQueryを使用して、ここで説明する方法を使用できます 。jqueryでコピーして貼り付けるときにテキストボックスの空白を削除する

于 2012-08-14T00:02:23.753 に答える
1

あなたが説明したタスクに近づくと、JavaScriptの有無にかかわらず、コードがさまざまなブラウザーで機能することを確認したいので、次のようにします。

  1. maxlengthを11に設定します-maxlengthはHTML属性であり、javascriptの有無にかかわらず、ユーザーが入力したデータが失われないようにする必要があります。ユーザーが11桁を入力し、JavaScriptがない場合は、データをキャプチャしてサーバー側からクレンジングする必要があります。ええと、サーバー側の検証は必須です。

  2. javascriptが存在する場合は、jquery関数を使用して最大長を設定し、スペースが削除されていることを確認します。したがって、ID ='title'のフィールドがあるとします。ドキュメントの準備ができたら、次のコードを記述します。

    $('input#title')。attr('maxLength'、 '10')。keypress(limitMe);

    function limitMe(e) {
        if (e.keyCode == 32) { return true; }
        return this.value.length < $(this).attr("maxLength");
    }
    

明らかに、多数のフィールドがある場合は、すべての入力フィールドを同じクラス属性で装飾してから、次のようにすべてのフィールドに適用します。

$('input.limited').attr('maxLength','10').keypress(limitMe);
于 2012-08-14T00:36:25.663 に答える
0

アルファベット文字、アラビア文字、大文字、数字などを置き換えたい場合は、次のon paste関数を使用できます。

cleanPermalink= function(e) {
    e.preventDefault();
    var pastedText = '';
    if (window.clipboardData && window.clipboardData.getData) { // IE
        pastedText = window.clipboardData.getData('Text');
      } else if (e.clipboardData && e.clipboardData.getData) {
        pastedText = e.clipboardData.getData('text/plain');
      }
    // This can replace English, Arabic, and Numbers spaces with (-)
    this.value = pastedText.replace(/[^a-zA-Z؀-ۿ0-9-]+/g,'-');

    // In case you want both Lowercase and Replace spaces use:
    // this.value = pastedText.toLowerCase().replace(/[^a-zA-Z؀-ۿ0-9-]+/g,'-');
};

permalink.onpaste = cleanPermalink;

それが誰かを助けることができることを願っています。

ありがとうございました

于 2020-08-09T16:46:22.303 に答える