1

ボタンが多いjquery mobileで専用の電卓アプリを作成しています。

私の問題は、ユーザーがボタンを処理できるよりも速くタップすると、タップがキューに入れられて、次にボタンがタップされたときにダブルタップとして表示されることがあります。ユーザーがボタン「1」、「2」、「3」、「4」を押すと、「1234」が別の要素に表示されます。代わりに「134」が表示される場合があります。もう一度「2」をタップすると、「13422」と表示されます。その間、他のキーをいくつでもタップでき、それぞれが処理されますが、次に「2」を押すと、タップ イベントが 2 回発生します。

すべてのボタン タップをキャプチャし、data-tag 属性に基づいて処理します。

    $('button').tap(function (event) {
    var tag = $(this).attr("data-tag")

    switch (tag){
       case "1":
       \\ do stuff
       break;

       case "2":
       //do stuff
       break;

            case "3":
       //do stuff
       break;
     }  
    });

処理中にボタンを無効にして、後でこのように再度有効にしようとしましたが、

     $('button').tap(function (event) {


          $(this).prop('disabled', true).button('refresh');


        // process the taps


         $(this).prop('disabled', false).button('refresh');


    });

しかし、これは問題を解決しません。

この奇妙な 2 回目のタップのトリガーなしで、キューに入れられたすべてのイベントを処理するにはどうすればよいですか?

4

1 に答える 1

0

私はそれを理解したと思います。event.preventDefault();イベントをピックアップした後に入れます。

    $('button').tap(function (event) {
         event.preventDefault();
         // do stuff
    )};

これにより、二重効果が防止されます。

唯一の問題はevent.preventDefault()、tap デバイスではなくコンピューターで vclick が機能しないため、tap を使用する必要があることです。

于 2013-10-13T22:37:28.780 に答える