阻止输入字段上的click-Event

时间:2012-08-29 15:24:55

标签: javascript jquery cordova javascript-events

我正在为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()方法激活输入字段时,键盘弹出并向上滑动页面然后点击事件被触发并激活另一个输入字段,比我的要低一点期望的输入。

为了防止点击,我已经尝试了

$('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 个答案:

答案 0 :(得分:4)

你可以试试这个

 $('input, textarea, select').click(function(event) {
    event.preventDefault();
 });

答案 1 :(得分: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/

答案 2 :(得分: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();
    });

答案 3 :(得分:0)

我遇到了与您相同的问题,并尝试实施发布的所有其他解决方案,结果发现它们中没有一个完全适合我。相反,我从所有以前的解决方案中借鉴了想法,发现这段代码片段解决了我的问题。

    $('input, textarea, select').click(function (event) {
        event.stopPropagation();
    });