我有一个警告,如果他们添加了页面上已存在的元素,则会向用户显示。我有一个自动完成功能,如果用户选择的项目,我提醒他们该元素已被添加。但是,当我单击警报的确定时,它会提交我不想要的表单。这仅适用于特定情况。当我在自动完成元素上按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("");
}
});
这是铁轨形式:
<%= 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>
如何在不应该提交表单的时候提交表单,如何阻止这种情况发生?感谢
答案 0 :(得分:0)
如果您不希望表单提交,除非“某事”,假设您已经在使用jQuery,请在表单中添加.submit()处理程序
答案 1 :(得分:0)
这是关注哪个元素的问题。你必须将你的keydown事件放在有问题的输入字段上。或者您在表单中添加submit()
处理程序并做出相应的反应。
在窗口中预防它太晚了,因为它已经在焦点位于表单元素上时触发了提交(并且只有在那个气泡到窗口对象之后)。