【发布时间】:2016-05-06 18:32:59
【问题描述】:
我正在处理待办事项。而且,我正在寻找通过ajax 在pressing 'enter' key 上提交待办事项。
它工作正常。但是,有一个问题。每次按下“输入”键,它都会提交 2 次数据。我没有任何提交按钮。我想在文本框中按回车键 (#todos-t_description)。
<form id="create-todos-form" action="/misc/todos/index" method="post">
<input id="todos-t_description" class="t_description form-control" name="Todos[t_description]" type="text">
<select id="todos-t_case_id" class="form-control" name="Todos[t_case_id]">
<option value="">Related to case</option>
</select>
</form>
我用过。
<script>
window.addEventListener("DOMContentLoaded", function() {
jQuery(document).ready(function($){
$('.t_description').keydown(function (event){
if (event.keyCode == 13) {
$('#create-todos-form').submit();
}
});
$('#create-todos-form').on('submit', function(e) {
e.preventDefault();
var form = $(this);
var formData = form.serialize();
$.ajax({
url: "/misc/todos/create",
type: "POST",
data: formData,
success: function (data) {
$("#todos-t_completed_date").blur();
$('tbody').append(data);
$('.t_description').val("");
$('#todos-t_completed_date').val("");
$('.noTodos').hide();
},
error: function () {
alert("Problem Ocurred");
}
});
});
});
}, false);
</script>
我不知道代码中发生了什么。如果我在e.preventDefault(); 之前发出警报。在单次“输入”键按下时也会出现两次警报消息。即使我在收到成功消息后也专注于其他文本框。但是,不,它没有奏效。任何提示/建议。
【问题讨论】:
-
使用
eventListener或documentReady。