【问题标题】:Change Behavior of form submit更改表单提交的行为
【发布时间】:2012-08-08 16:01:41
【问题描述】:

我在我的主页上使用了一个基本表单,它收集了用户的电子邮件地址。没有提交按钮,而是一个启动模式框的锚链接。 (用户输入的电子邮件地址用于模态内容)

当用户填写表单电子邮件输入时,他们的本能是按回车或单击“提交”链接。通过启动模式,提交链接非常有用,但按 Enter 将尝试提交表单。我不希望用户提交表单,而是通过按下锚链接来启动模式。

有什么办法:

A) 更改 enter 以启动模式与提交表单的默认行为?

B) 禁用 Enter 按钮提交表单并强制用户点击锚链接?


我使用的是leanmodal,它非常简单,语法如下:

<a href="#newsForm" rel="leanModal" class="submitModal">Submit</a>

<div id="#newsForm">Modal content here</div>

注意:我不能将提交输入用作“模态启动器”,因为模态与输入不兼容。

【问题讨论】:

    标签: jquery forms anchor modal-dialog


    【解决方案1】:

    我宁愿推荐这样的东西。

    $(function() {
        $('#newsForm').submit(function( jqEvt ) {
            jqEvt.preventDefault();
            $('.submitModal').click();
        });
    });
    

    【讨论】:

    • 这与@OscarJara 答案中的选项 C 相同。在 Enter 时,它仍然会提交表单并将用户带到页面顶部,因为这不是操作....
    • @JCHASE11 考虑到我在 Oscar Jara 更新他甚至包括选项 C 之前发布了我的答案。
    【解决方案2】:

    A) 更改 enter 以启动模式与提交表单的默认行为:

    $(function(){
        $(document).on('keyup', function(e) {
            var code = (e.keyCode ? e.keyCode : e.which);
            if(code == 13) { //Enter keycode
                //If user press enter will open the modal
                $('.submitModal').click();
            }
        });
    });​
    

    B) 禁用 Enter 按钮提交表单并强制用户点击锚链接。

    $(function(){
        $(document).on('keyup', function(e) {
            var code = (e.keyCode ? e.keyCode : e.which);
            if(code == 13) { //Enter keycode
                //Stop the "submit", nothing will happen when user press enter
                e.preventDefault();
            }
        });
    });​
    

    C) 另一种选择:您可以通过执行以下操作“覆盖”submit(); 函数:

    $(function() {
        $('#newsForm').submit(function(e) {
            $('.submitModal').click();
            e.preventDefault();
        });
    });
    

    【讨论】:

    • 选项 A 和 C 听起来都很棒;虽然当我尝试输入我的电子邮件并按 Enter 时,它仍会提交表单,并且不会启动模式。您可以在顶部页脚的保持联系区域中尝试一下:bajdesign.com/foundationsource/get-started
    • 选项 C 不应该与选项 A 做同样的事情 - 它使用 preventDefault 禁用提交,并通过单击启动模式???这是应该发生的,但不是。
    • @JCHASE11 为什么你的搜索有输入类型提交?我认为将类型更改为按钮并做一些额外的事情来提交搜索将解决您的模态问题
    • 这不是用于搜索,这是用于在页面底部提交时事通讯。这个表单实际上没有输入 type=submit,因为它被一个锚替换。想法?
    • @JCHASE11 如果您使用 chrome 控制台检查浏览器中的元素,您会发现搜索表单的输入类型提交。好吧,我给你举个例子,等等
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-19
    • 1970-01-01
    • 2021-06-27
    • 1970-01-01
    • 2013-01-26
    • 2019-05-21
    • 1970-01-01
    相关资源
    最近更新 更多