【问题标题】:Click event inside submit event is not working in chrome 47提交事件中的单击事件在 chrome 47 中不起作用
【发布时间】:2015-12-13 16:47:35
【问题描述】:

我正在尝试使用此代码阻止页面上的提交事件,以便如果我按 Enter 键,它将单击 validate 元素。

$(document).ready(function(){
$("form").submit(function(event){
 event.preventDefault();
 document.getElementById("validate").click();//alert("Something") works fine here
 });
});

但是,当我按下 Enter 键时,将焦点放在任何文本字段上,它会提交表单以及分配给表单的操作。它不会像 google chrome 47 中预期的那样阻止 Submit 事件。如果我将放置任何 @ 987654324@ 而不是 document.getElementById("validate").click(); 那么它工作正常。这是该页面的html代码

<td align="center" width="100%">
<input type="button" value=" Next " id="validate" tabindex="4">
<a id="Proceed" href="#" onclick="mojarra.jsfcljs(document.getElementById('form'),{'Form:Proceed':'Form:Proceed'},'');return false"></a>
<input id="replan" type="submit" name="replan" value="Replan" tabindex="4">
</td>

那么,谁能解释一下为什么这在新版本的 chrome 中不起作用?(它在 chrome 39 中运行良好)

注意:ID为validate的事件是使用addEventListener()分配的。

【问题讨论】:

    标签: javascript jquery forms google-chrome submit


    【解决方案1】:

    在类似的情况下,我采取了稍微不同的做法,我在文本框上按下 keydown 并执行 preventDefault 以防止表单被提交。

    $(document).ready(function(){
        $("input[type='text']").keydown(function(evtObj){
             var code = (e.keyCode ? e.keyCode : e.which);
             if (code==13) {
                e.preventDefault();
            }
        });
    });
    

    请参阅此关于密钥捕获的讨论jQuery - keydown / keypress /keyup ENTERKEY detection?

    【讨论】:

    • 如果是因为keydown 事件,那么如果我用任何其他代码(即alert())替换该行,为什么它会起作用。即使我按了Enter,它也没有提交表单
    • 我想我仍然对您要完成的工作感到有些困惑。您只是想在提交之前进行验证吗?如果是这样,请在您的函数中进行验证。如果有效返回真。如果无效,执行 e.preventDefault 并返回 false。
    猜你喜欢
    • 2012-07-13
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 2017-10-13
    • 2013-04-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多