如何使[Enter]只运行一个处理程序
How to make [Enter] only run a handler?
我正在学习Head First HTML5。他们在书中有一个教程,介绍如何用JavaScript创建一个非常基本的播放列表。单击按钮后,输入的文本将添加到列表中。我想,"我宁愿只按回车键。"所以,我试着更进一步,让按键运行适当的功能。
似乎[Enter]键会将新文本添加到列表中,但随后会刷新页面和整个列表,删除任何输入的文本!我检查了一下其他键是否也发生了同样的事情,它们都工作得很好,所以这只是[Enter]键发生的事情。
window.onload = init;
function feedTheList() {
var textInput, songName, li, ul;
textInput = document.getElementById("songTextInput");
songName = textInput.value;
li = document.createElement("li");
li.innerHTML = songName;
if (!songName) {
alert("There is no new song name.")
}
else {
ul = document.getElementById("playlist");
ul.appendChild(li);
}
}
function init() {
var button, textBox;
window.addEventListener('keypress', function (e) {
if (e.keyCode === 13) {
feedTheList();
}
});
button = document.getElementById("addButton");
button.onclick = feedTheList;
}
为什么[Enter]键会刷新页面?如何防止它刷新页面?
由于您使用的是表单字段(输入或文本区域),因此[enter]键被映射为"提交"表单。您需要使用event.preventDefault()
:防止默认操作行为
window.addEventListener('keypress', function (e) {
if (e.keyCode === 13) {
e.preventDefault();
feedTheList();
}
});
相关文章:
- Webpack/Rect:遵循egghead.io教程,但出现错误:您可能需要一个合适的加载程序来处理此文件类型
- 从HTTPGET返回一个自定义对象列表,以便在Angular 2应用程序中使用
- 我想在AngularJS应用程序中创建一个输入数字框,用户不应该在该框上键入十进制数字.(一个整数输入框)
- 通过另一个php应用程序将我的项目推送到Github存储库中
- 一个密码测试程序,如果存在空格,它会提醒用户
- 引导程序崩溃一次只能看到一个
- 仅为一个窗体运行应用程序脚本
- 错误:$injector:modulerr模块错误(我的第一个SPA应用程序)
- React应用程序:道具在下一个事件后更新
- 如何从另一个处理程序内部取消JavaScript事件处理程序函数的执行
- 编写一个程序在别人的网站上做某事,是不可能的
- 一个程序PhantomJS如何等待AngularJS$资源解析,然后再尝试测试返回的数据
- 导出javascript对象以在另一个程序中使用它
- 如何运行一个程序,直到用户给出一定的答案(字符串+ #)
- 如何从HTML运行另一个程序
- 如何用一个代码库编写一个程序来支持多个客户的定制需求?
- 制作一个javascript聊天机器人,将聊天命令转换为另一个程序中的按键
- 一个程序有多少行代码?(我知道这是一种模糊和视情况而定,但是……)
- javascript输入另一个程序要求的密码
- 我正在尝试用JavaScript构建一个程序,该程序扫描段落并返回包含特定单词的句子