我有一个提醒,显示给用户,如果他们添加页面上已经存在的元素。我有一个自动完成,如果用户选择的项目,我会提醒他们已经添加了该元素。但是,当我点击警报的确定时,它会提交我不想要的表单。这只发生在一个特定的情况下。当我按下自动完成元素上的回车时,如果元素存在,我会发出警报。然后,如果我点击确定提醒表单提交!我有防止输入提交表单的代码。这里是我的代码:点击确定在JavaScript提交提交形式
$(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>
怎么会被提交表单时,它不应该和如何阻止这种情况的发生?由于
只是疯狂的猜测,但尝试在$(window).keydown(function(event){)中添加一个alert('something')并检查是否.autocomplete在该字段上不重写它 – beder
你试过了吗stopPropagation而不是preventDefault? – mico
我看不到在哪里以及如何提交表单! –