10

入力から貼り付けイベントをバインドしました。

$(document).ready(function(){
      $('.myInput').bind("paste",function(e) {
          console.log(e);
      });
});​

CTRL-V を押すたびに、eイベント オブジェクトが返されます。

ユーザーが入力に貼り付けようとしているデータを取得したい。

イベント オブジェクトを調べると、次のようないくつかの場所で値が見つかりました。

  • e.srcElement.value
  • e.target.value

しかし、それらは貼り付けが行われた後に入力の値を返します。したがって、別の文字列を入力した後にテキストを貼り付けると、両方の文字列が連結されます。

私はインターネットを検索しましたが、醜いフラッシュソリューションしか見つかりませんでした。

jqueryでこれを行うきれいな方法はありますか?

e.srcElement.value入力値を取得した後、貼り付けでテキスト全体を取得しbefore、両方の文字列を比較して最初の部分を削除し、結果としてクリップボードの値を返すことを考えました。

4

3 に答える 3

7

たぶんこれはあなたがやろうとしていることですが、100%確実ではありません:

HTML:

<input type="text" id="test" class="myInput" value="This is some default text" />​

jQuery:

$(document).ready(function () {
    $('input').on('paste', function (e) { //Attach paste event handler for all inputs
        $(this).val('').val(e.target.value); //Clear the current value, then insert the value of the data that was pasted
    });
});

フィドル: http://jsfiddle.net/PMq6U/

于 2012-12-20T03:08:58.950 に答える
-1

onbeforepaste イベントを使用してそれを行うことができます。

$(function(){
    $('#el').on('beforepaste',function(e){
        [...]
    });
});
于 2012-12-20T03:02:47.790 に答える