【发布时间】:2021-06-03 12:13:03
【问题描述】:
我已经编写了一些代码来使用 jQuery 创建一个待办事项列表。如果我按 Enter 键,它应该将输入提交到下面的列表中,但问题是页面会刷新,就好像它正在提交表单一样。我已经在 SO 上检查了多个线程,但我没有找到解决方案。
Stop reloading page with 'Enter Key'
Prevent users from submitting a form by hitting Enter
我已尝试添加 e.preventDefault(); 和 return: false; 这会停止刷新,但也会阻止在按 Enter 后添加到列表中。
我在 html 表单标签中尝试了以下内容:
onSubmit="return false;"
action="#"
我的 IIFE 是否有问题导致此问题?
let checklist = (function() {
function newItem() {
let li = $('<li></li>');
let inputValue = $('#input').val();
let input = $('#input');
let deleteIcon = $('<div></div>');
function crossOut() {
li.toggleClass('strike');
}
function deleteListItem() {
li.addClass('delete');
}
if (inputValue === '') {
alert('You must write something!');
} else {
$('#list').append(li);
input.val('')
}
deleteIcon.append(document.createTextNode('X'));
li.append(deleteIcon);
li.append(inputValue);
deleteIcon.on('click', deleteListItem);
li.on('dblclick', crossOut);
$('#list').sortable();
}
return {
newItemf: newItem
};
})();
$('#button').on('click', checklist.newItemf)
$(window).on('keypress', function (e){
if(e.which == 13) {
checklist.newItemf;
return false;
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form name="toDoList">
<input type="text" name="ListItem" id="input">
</form>
<div id="button">Add</div>
<br/>
<ol id="list"></ol>
【问题讨论】:
-
这能回答你的问题吗? Stop reloading page with 'Enter Key'.The accepted answer说明需要绑定
formsubmit事件。 -
我试过了,但除非我的语法错误,否则它不起作用。
标签: javascript html jquery forms