繁体   English   中英

在javascript Alert提交表单上单击“确定”

[英]Clicking ok on javascript Alert submits form

如果用户添加页面上已经存在的元素,则会向用户显示警报。 我有一个自动完成功能,如果用户选择该项目,我会提醒他们该元素已经添加。 但是,当我单击警报的确定时,它将提交不需要的表单。 这仅在特定情况下发生。 当我在自动完成元素上按Enter时,会发生这种情况,如果该元素存在,则会发出警报。 然后,如果我在警报上单击“确定”,则表单提交! 我有代码可以防止输入表单。 这是我的代码:

$(window).keydown(function(event){
    if(event.keyCode == 13) {
        event.preventDefault();
        return false;
    }
});

$(".autocomp_centers").autocomplete({

    serviceUrl:'/suggest_centers',
        maxHeight:400,
        width:252,
        params: {country: $("#country").val() },
        minChars:2,
        onSelect: function(value, data){
            var ids = [];
            $("#sister-centers-list > li").each(function(index, value){
                ids.push($(value).attr('class'));
            });

            if ($.inArray("center-"+data, ids)  == -1){
                $("#hidden-ids").append('<input type="hidden" name="center_ids[]" value="' + data +'" class="center-' + data + '"/>');
                $('#sister-centers-list').append('<li class="center-' + data + '">' + value + ' <a href="#sister-center" class="remove-center-before-save" id="' + data + '">Remove</a></li>');
            }else{
                alert("Sister center has already been added.");
            }               
            $("#sister-search").val("");
        }
});

这是rails形式:

    <%= form_for @center, :url => center_update_sister_centers_path(@center) do |f| %>

        <div class="field" style="margin-top:10px;">
            <%= f.submit 'Save', :class => "btn purple-button" %>
        </div>

为何不应该提交表单,如何阻止这种情况发生? 谢谢

如果您不希望表单提交,除非您已经使用jQuery,否则请在表单中添加.submit()处理函数。

这是关注哪个元素的问题。 您必须将keydown事件放在相关的输入字段中。 或者,您可以在表单中添加一个submit()处理函数,然后做出相应的反应。

阻止它在窗口中为时已晚,因为当焦点位于form元素上时(并且仅在气泡上升到window对象之后),它已经触发了提交。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM