2

我正在为 iPad 开发一个 PhoneGap-App。在一个屏幕上,您必须填写一个包含大约 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 回答