1

この単純なコードを試しています。2番目の入力テキストボックスでイベントが発生した場合、その内容をコピーし、前のテキストボックスの属性を削除して、そこに貼り付けたpaste後、イベントをクリアする必要があります。readonlyしかし、何も起きていません。

タイマーのpasteコードを単純なものに置き換えると機能するため、イベントは正常に発生しalertます。誰かがここで何が悪いのか教えてもらえますか?

<!DOCTYPE html>
<html>
  <head>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js">
    </script>
    <script>
       $(document).ready(function(){
         $(".boo").bind("input paste",function() { 
         elem = this;
         setTimeout(function() { 
             $(".foo").removeAttr("readonly");
             $(".foo").text($(elem).text());
             $(elem).text("");  
         },100);
        });
      });
  </script>
</head>
 <body>
   <input class = 'foo' type = 'text' /><input class = 'boo' type = 'text' />
 </body>
</html>
4

1 に答える 1

4

まず、入力制御.val()の代わりに使用する必要があります。.text()

$(document).ready(function () {

    $("input.boo").bind("paste", function () { //also changed the binding too
        var elem = $(this);
        setTimeout(function () {
            $(".foo").val(elem.val());
            elem.val("");
        }, 100);
    });

});

また、テキストがコントロールに貼り付けられたときに、バインドされたイベントが2回発生しました。これは、「boo」クラスを使用して、両方のイベントinputとイベントを要素にバインドしているためです。paste

したがって、ここでは、代わりに:

$(".boo").bind("input paste", function() {});

これを使って:

$("input.boo").bind("paste", function() {});

pasteこれにより、イベントのみが「boo」クラスの入力要素にバインドされます。

更新された jsFiddleの例を参照してください。

于 2013-01-19T14:55:54.057 に答える