10

貼り付けイベントをキャッチしています$('selector').on('input', function(event) { ... });

次に、貼り付けられたものをテストしようとしています。検証に合格しない場合は、貼り付けをキャンセルしevent.preventDefault()ます。残念ながら、リスナー関数が実行されるまでに、テキストは既に貼り付けられており、event.preventDefault()何もしません。

では、貼り付けイベントをキャッチする良い方法は何ですか?貼り付けられたものが検証されない場合は、貼り付けを元に戻す/防止しますか?

を使用できることはわかっ.on('paste', function(event) { ... })ていますが、貼り付けられたテキストや貼り付け後の入力要素の内容は、setTimeout()数分待機して使用しない限り、表示されず、使用を避けたいと思いsetTimeout()ます。

4

4 に答える 4

0

jqueryの.changeイベントを使ってみてください。

値が条件を満たさない場合は、値を空白に設定します。

于 2016-05-10T16:53:46.147 に答える
0

使用する

$('selector').on('input', function(event) { ... }); 

検証に合格しない場合、貼り付けられたテキストを削除するとうまくいくようです。

悲しいことに、クリップボードへのアクセスにはいくつかの欠陥があります (クリップボードの検査を許可するかどうかをブラウザーが尋ねる、ブラウザー間の互換性など)。

入力の最後の値を保存しても問題ない場合は、貼り付けられたテキストをとにかく計算できます。

貼り付けられたテキストを計算するための私のアプローチは次のとおりです

https://jsfiddle.net/f710o9qd/2/

これがお役に立てば幸いです:)

(問題があれば、貼り付けたテキストの計算を自由に修正してください)

于 2019-10-03T00:17:21.493 に答える
-1

質問からの私の理解は、特定の検証に合格するまで、または合格しない限り、テキストボックス内にデータを貼り付けることを許可してはならないということです。を使用する代わりに、リスナーをevent.preventDefault()使用してユーザーがコンテンツを入力したときに値を取得on('input')し、特定の条件に対して検証し、検証が失敗した場合はテキスト ボックスの値を空にすることができます。

on('input')(これは、まだイベント リスナーを使用する必要がある場合の回避策です)

サンプルコード(console.log()貼り付けた値を印刷するために使用しています):

HTML :

<input type='text' id="selector" />

JS :

$(document).ready(function() {
 $('#selector').on('input', function (e){
        if(e.target.value !== "myValue"){
        $('#selector').val('');
    }
    else{
        console.log(e.target.value);
    }
 });
});
于 2016-05-10T15:50:00.790 に答える