2

iPad用のPhoneGap-Appを開発しています。1 つの画面で、約 20 個のテキスト フィールドを含むフォームに入力する必要があります。入力フィールドはクリックイベントにのみ反応するため(これは長くはありませんが、厄介な遅延があります)、次のことを試しました:

$('input[type="text"], input[type=number], input[type=date], input[type="tel"], input[type=password], input[type="email"], input[type="url"], textarea, select').live("touchend", function(e) {
    if(!swipe) {
        $(this).focus();
    }
    swipe = false;
    return false;
});

(イベントでスワイプチェックしてtouchmoveます)

これは機能しますが、入力での元のクリック イベントを防止したいと考えています。問題は、メソッドで入力フィールドをアクティブにすると.focus()、キーボードがポップアップしてページが少し上にスライドし、clickイベントが発生して、目的の入力の少し下にある別の入力フィールドがアクティブになることです。

クリックを防ぐために、私はすでに試しました:

$('input[type="text"], input[type=number], input[type=date], input[type="tel"], input[type=password], input[type="email"], input[type="url"], textarea, select').live("click", function(e) {
    return false;
});

しかし、これも機能しません:(

入力フィールドに触れた直後にすぐに入力フィールドをアクティブにする別のトリックはありますか?

4

4 に答える 4

4

あなたはこれを試すことができます

 $('input, textarea, select').click(function(event) {
    event.preventDefault();
 });
于 2012-08-29T15:27:53.647 に答える
2

デフォルトのアクションを防ぐには、 preventDefault を使用する必要があります。

  $('input[type="text"], input[type=number], input[type=date], input[type="tel"], input[type=password], input[type="email"], input[type="url"], textarea, select').live("click", function(e) {
        e.preventDefault();
    });

ドキュメント : http://api.jquery.com/event.preventDefault/

于 2012-08-29T15:26:13.247 に答える
0

伝播停止です。

$('input[type="text"], input[type=number], input[type=date], input[type="tel"], input[type=password], input[type="email"], input[type="url"], textarea, select').live("click", function(event) {
        event.stopPropagation();
    });
于 2016-03-09T13:45:08.803 に答える
0

私はあなたと同じ問題を抱えていて、投稿された他のすべてのソリューションを実装しようとしましたが、どれも完全に機能しないことがわかりました. 代わりに、以前のすべてのソリューションからアイデアを借りたところ、このコード スニペットが問題を解決することがわかりました。

    $('input, textarea, select').click(function (event) {
        event.stopPropagation();
    });
于 2018-08-07T21:42:25.033 に答える