按下 Enter 时运行 JavaScript 函数 - 只有 JavaScript 没有 Jquery
Run javascript function when enter is pressed - JavaScript only no Jquery
您好,我正在尝试在按回车键时运行javascript函数。这是我到目前为止
的代码
我的网页
<!DOCTYPE html>
<html>
<head>
<title>JS Bin</title>
</head>
<body>
<div>
<form id="inputForm">
<label for="userInput">Input : </label>
<span id="userInputSpan">
<input type="text" id="userInput" onkeydown="readInput(this)" />
</span>
</form>
</div>
</body>
</html>
我的 JAVASCRIPT
function readInput(e) {
if (e.keyCode == 13) { // 13 is enter key
// Execute code here.
// var temp = e.value;
// console.log(temp);
alert(e.value);
}
}
这是我的JSBin
您将this
传递给事件处理程序并将其用作event
对象。
将元素实例和事件对象传递给事件处理程序。
<input type="text" id="userInput" onkeydown="readInput(this, event)" />
^^^^ ^^^^^
并将它们放入处理程序
中function readInput(el, e) {
^^ ^
// el: Element
// e: Event object
更新的 JSBin
window.onload = function() {
document.getElementById("userInput").focus();
};
function readInput(el, e) {
if (e.keyCode == 13) {
console.log(el.value);
}
}
<div>
<form id="inputForm">
<label for="userInput">Input :</label>
<span id="userInputSpan">
<input type="text" id="userInput" onkeydown="readInput(this, event)"/>
</span>
</form>
</div>
建议:
- 使用
- DOMContentLoaded 事件而不是使用 onload。
- 使用 addEventListener 绑定事件
- 要将焦点设置为页面加载,请在输入上使用
autofocus
属性 - 若要阻止提交
form
,请使用return false;
或event.preventDefault()
from 事件处理程序。
document.addEventListener('DOMContentLoaded', function() {
document.getElementById('userInput').addEventListener('keydown', function(e) {
if (e.keyCode == 13) {
console.log(this.value);
e.preventDefault(); // Prevent default action i.e. submit form
// return false;
}
}, false);
});
<div>
<form id="inputForm">
<label for="userInput">Input :</label>
<span id="userInputSpan">
<input type="text" id="userInput" autofocus />
</span>
</form>
</div>
这是我
使用的普通JavaScript。希望对您有所帮助。
document.onkeyup = function(e){
if(e){
var key = window.event ? e.keyCode : e.which;
}else{
var key = window.event ? event.keyCode : event.which;
}
if (key == '13') {
//Code you would like to execute
}
}
相反,我建议不要在HTML中嵌入JavaScript。
document.addEventListener('keydown', function(e) {
if ( e.keyCode == 13 ) {
var ele = document.getElementById('userInput');
alert(ele.value);
}
});
<form id="inputForm" >
<label for="userInput">datt1939 : </label>
<span id="userInputSpan">
<input type="text" id="userInput">
</span>
</form>
由于 StackOverflow 沙箱阻止alert
触发,这里有一个 JSFiddle。
有几种方法可以做到
内联事件
<input type="text" value="" onKeyDown="if(event.keyCode==13) alert('Inline Event');" size="20" id="demo1" placeholder="Inline Event">
使用 addEventListener 的不显眼的代码
<input type="text" id="demo2" value="" size="20" placeholder="Using addEventListener">
不显眼的代码 调用函数
<input type="text" id="demo3" value="" onKeyUp="executeEvent(this,value)" size="20" placeholder="Seperate Handler">
.JS
将 addEventListener 附加到 DOM 元素
document.getElementById('demo2').addEventListener('keydown',function(event) {
if (event.keyCode == 13) {
alert('5');
}
})
执行事件函数
function executeEvent(elem,value){
console.log(elem)
if (event.keyCode == 13) {
alert('You entered ' +elem.value);
}
}
这是JSFIDDLE
相关文章:
- JavaScript:只有当数组中的所有项都为true时才执行函数
- Javascript XMLHttpRequest——只有第一个POST请求有效
- 只有当Javascript控制台在chrome上打开时,Javascript才能工作
- 只有当alert()在带有AJAX的internet explorer中使用时,Javascript才会更新UI
- Javascript中的正则表达式,用于只有数字的字符串,并且不应在除数字以外的任何位置包含任何字符
- Javascript:只有在代码中使用单个实例时,函数才能正常工作
- 使用javascript验证只有一个特殊字符的字符串
- Javascript尽管ID不同,但只有第一个按钮提交给Ajax表单
- JavaScript只有在最后一次被调用时才运行函数
- Javascript 只有没有 JQUERY 幻灯片 One DIV .活动类
- Javascript只有在重新加载/刷新后才能工作
- 如果输入两个输入标签具有相同的值,则给出警报 - JavaScript 只有 jQuery
- Rails javascript只有在重新加载后才能工作
- Javascript只有在页面加载后才能工作
- 如何首先加载/渲染HTML/CSS,然后是Javascript(只有当它's必要)
- Jquery / javascript只有在同一行的复选框被选中时才会求和字段
- Javascript只有在developerwindow打开后才能工作
- 为什么一段Javascript只有在它下面有一个警告时才能工作?
- 为什么我的javascript只有在代码重复时才会触发
- JavaScript:只有当它不是谷歌chrome浏览器时才执行代码