4

まず第一に、私は使用しています:

  • Jquery 1.8.3
  • マスクされた入力プラグイン1.3.1(プラグインはここにあります)

私の目標:

  • 入力フィールドをマスクして、11桁の数字のみを受け入れます。ただし、外部ソース(テキストファイルなど)から11個の数字のみを含むテキストをコピーする場合、プラグインでマスクされた入力フィールドに貼り付けることができるように、コピーアンドペーストを受け入れたいと思います。

問題:

  • たとえば、03073870970(11個の数字)を貼り付けようとすると、マスクは030738709(9個の数字)のみを受け入れます。

これを解決するにはどうすればよいですか?ヒントは大歓迎です。

4

5 に答える 5

11

プラグインを変更する必要はありません。貼り付けイベントをバインドし、貼り付けの直前にコンテンツをクリアできます。したがって、マスクはペーストを作るのを防ぐためにスペースを保持しません.

$('input.class').bind('paste', function () { $(this).val(''); });
于 2014-02-10T12:55:10.593 に答える
10

解決:

以下のように、プレースホルダーを "_" または " " またはその他のプレースホルダーから "" (空の文字列) に変更します。

$(".cpfInput").mask("99999999999",{placeholder:""});

トリックは、空の文字列以外のプレースホルダーを配置すると、プラグインが入力フィールドにプレースホルダーを入力し、何かを貼り付けるときに、貼り付けようとしているものを貼り付ける前にそれを消去しないことです。

于 2013-01-24T20:01:57.927 に答える
2

同じ問題がありましたが、何も削除せずに見つけた最も簡単な解決策 (プレースホルダーなど) は次のとおりです。

$('input[placeholder]').on('paste', function(){
    $(this).val(' ');
});

チャームとして機能します:)

私が見つけたもう1つの解決策:

$('input[placeholder]').on('paste', function(e){
    e.preventDefault();
    var clipboardCurrentData = (e.originalEvent || e).clipboardData.getData('text/plain');
    window.document.execCommand('insertText', false, clipboardCurrentData);
});
于 2014-10-24T14:56:40.990 に答える
1

代わりにFormatter.jsを試してください。私はまさにこの理由で切り替えました。もう 1 つの理由は、不完全なフィールドを取り巻く UX の悪さでした。たとえば、あるウィンドウから別のウィンドウに移動して電話番号を取得する場合、3 つの番号を追加し、ウィンドウを変更して残りの番号を取得してから戻ることができますが、マスクされた入力プラグインは、ウィンドウを変更するたびにフィールドをクリアします。イライラするUX!

于 2013-11-13T00:08:00.050 に答える