Jquery事件阻止默认不起作用(jquery mobile和phonegap)

时间:2015-10-05 04:22:24

标签: jquery cordova jquery-mobile

我的表格看起来像这样:

<form id="message">
    <input type="text" id="name" placeholder="Name">
    <textarea id="messagefield" placeholder="Message"></textarea>
    <input type="submit" value="Send">
</form>

我想执行一个函数而不是表单提交,所以我在页面底部有这个:

$(function() {
    $("#message").on("submit", function(e) {
        e.preventDefault();
        var recipient = $("#name").val();
        var message = $("#messagefield").val();
        send(recipient, message);
    });
});

但出于某种原因,当我按下发送时,19/20次,页面重新加载,输入中的值消失。知道为什么会这样吗?有时当我去页面,然后刷新它,然后填写表格,它的工作原理。

我发现这个帖子:Submit button does not work unless I refresh the page form_for Rails由于某些原因我认为cordova可能会错误地呈现HTML,然后像重新加载那样修复它

原来那就是它。以下是呈现的HTML的屏幕截图: Imgur

一些更有用的信息:jQuery Mobile click event.preventDefault does not seem to prevent change

2 个答案:

答案 0 :(得分:0)

尝试使用: 它不会提交表格

 <button type="button" name="theButton" id="msg">SUBMIT</button>

 $(function() {
$("#msg").on("click", function(e) {
    e.preventDefault();
    var recipient = $("#name").val();
    var message = $("#messagefield").val();
    send(recipient, message);
});

});

答案 1 :(得分:0)

请在功能结束时返回false; 。 可能是表单提交成功并返回true,因此您的控件被清除。 如下::

$(function() {
        $("#message").on("submit", function(e) {
            e.preventDefault();
            var recipient = $("#name").val();
            var message = $("#messagefield").val();
            send(recipient, message);
            return false;
        });
    });