kde*_*ney 1250 javascript onclick button onkeypress
我有一个文本输入和一个按钮(见下文).当在文本框中按下键时,如何使用JavaScript 触发按钮的单击事件Enter?
我当前页面上已经有一个不同的提交按钮,所以我不能简单地将按钮设置为提交按钮.并且,如果从这个文本框中按下该按钮,我只希望Enter键单击此特定按钮,没有别的.
<input type="text" id="txtSearch" />
<input type="button" id="btnSearch" value="Search" onclick="doSomething();" />
Run Code Online (Sandbox Code Playgroud)
Ste*_*ulo 1397
在jQuery中,以下内容可行:
$("#id_of_textbox").keyup(function(event) {
if (event.keyCode === 13) {
$("#id_of_button").click();
}
});
Run Code Online (Sandbox Code Playgroud)
$("#pw").keyup(function(event) {
if (event.keyCode === 13) {
$("#myButton").click();
}
});
$("#myButton").click(function() {
alert("Button code executed.");
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Username:<input id="username" type="text"><br>
Password: <input id="pw" type="password"><br>
<button id="myButton">Submit</button>
Run Code Online (Sandbox Code Playgroud)
或者在纯JavaScript中,以下内容可行:
document.getElementById("id_of_textbox")
.addEventListener("keyup", function(event) {
event.preventDefault();
if (event.keyCode === 13) {
document.getElementById("id_of_button").click();
}
});
Run Code Online (Sandbox Code Playgroud)
document.getElementById("pw")
.addEventListener("keyup", function(event) {
event.preventDefault();
if (event.keyCode === 13) {
document.getElementById("myButton").click();
}
});
function buttonCode()
{
alert("Button code executed.");
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Username:<input id="username" type="text"><br>
Password: <input id="pw" type="password"><br>
<button id="myButton" onclick="buttonCode()">Submit</button>
Run Code Online (Sandbox Code Playgroud)
Ser*_*sky 389
然后只需编入代码即可!
<input type = "text"
id = "txtSearch"
onkeydown = "if (event.keyCode == 13)
document.getElementById('btnSearch').click()"
/>
<input type = "button"
id = "btnSearch"
value = "Search"
onclick = "doSomething();"
/>
Run Code Online (Sandbox Code Playgroud)
kde*_*ney 176
想出这个:
<input type="text" id="txtSearch" onkeypress="return searchKeyPress(event);" />
<input type="button" id="btnSearch" Value="Search" onclick="doSomething();" />
<script>
function searchKeyPress(e)
{
// look for window.event in case event isn't passed in
e = e || window.event;
if (e.keyCode == 13)
{
document.getElementById('btnSearch').click();
return false;
}
return true;
}
</script>
Run Code Online (Sandbox Code Playgroud)
alb*_*ein 81
使按钮成为提交元素,因此它将是自动的.
<input type = "submit"
id = "btnSearch"
value = "Search"
onclick = "return doSomething();"
/>
Run Code Online (Sandbox Code Playgroud)
请注意,您需要一个<form>
包含输入字段的元素才能使其工作(感谢Sergey Ilinsky).
重新定义标准行为不是一个好习惯,Enter键应始终调用表单上的提交按钮.
ice*_*ter 75
由于还没有人使用过addEventListener
,这是我的版本.鉴于要素:
<input type = "text" id = "txt" />
<input type = "button" id = "go" />
Run Code Online (Sandbox Code Playgroud)
我会使用以下内容:
var go = document.getElementById("go");
var txt = document.getElementById("txt");
txt.addEventListener("keypress", function(event) {
event.preventDefault();
if (event.keyCode == 13)
go.click();
});
Run Code Online (Sandbox Code Playgroud)
这允许您在保持HTML清洁的同时单独更改事件类型和操作.
请注意,确保它在a之外可能是值得的,
<form>
因为当我将这些元素包含在其中时按Enter提交表单并重新加载页面.我发现了一些眨眼之处.附录:感谢@ruffin的评论,我添加了缺少的事件处理程序和a,
preventDefault
以允许此代码(可能)在表单内部工作.(我将开始测试这个,此时我将删除括号内容.)
Var*_*run 58
在纯JavaScript中,
if (document.layers) {
document.captureEvents(Event.KEYDOWN);
}
document.onkeydown = function (evt) {
var keyCode = evt ? (evt.which ? evt.which : evt.keyCode) : event.keyCode;
if (keyCode == 13) {
// For Enter.
// Your function here.
}
if (keyCode == 27) {
// For Escape.
// Your function here.
} else {
return true;
}
};
Run Code Online (Sandbox Code Playgroud)
我注意到答案只在jQuery中给出,所以我想用普通的JavaScript给出一些东西.
Swi*_*ers 21
你可以使用的一个基本技巧,我没有看到完全提到.如果您想在Enter上执行ajax操作或其他工作,但又不想实际提交表单,则可以执行以下操作:
<form onsubmit="Search();" action="javascript:void(0);">
<input type="text" id="searchCriteria" placeholder="Search Criteria"/>
<input type="button" onclick="Search();" value="Search" id="searchBtn"/>
</form>
Run Code Online (Sandbox Code Playgroud)
设置动作="javascript:void(0);" 这样就是防止默认行为的捷径.在这种情况下,无论您是按Enter键还是单击按钮,都会调用一个方法,并调用ajax来加载某些数据.
mah*_*que 15
试试吧:
<input type="text" id="txtSearch"/>
<input type="button" id="btnSearch" Value="Search"/>
<script>
window.onload = function() {
document.getElementById('txtSearch').onkeypress = function searchKeyPress(event) {
if (event.keyCode == 13) {
document.getElementById('btnSearch').click();
}
};
document.getElementById('btnSearch').onclick =doSomething;
}
</script>
Run Code Online (Sandbox Code Playgroud)
Kam*_*ski 15
txtSearch.onkeydown= e => (e.key=="Enter") ? btnSearch.click() : 1
Run Code Online (Sandbox Code Playgroud)
txtSearch.onkeydown= e => (e.key=="Enter") ? btnSearch.click() : 1
Run Code Online (Sandbox Code Playgroud)
txtSearch.onkeydown= e => (e.key=="Enter") ? btnSearch.click() : 1
function doSomething() {
console.log('');
}
Run Code Online (Sandbox Code Playgroud)
小智 14
要在每次按下回车键时触发搜索,请使用以下命令:
$(document).keypress(function(event) {
var keycode = (event.keyCode ? event.keyCode : event.which);
if (keycode == '13') {
$('#btnSearch').click();
}
}
Run Code Online (Sandbox Code Playgroud)
Max*_*ing 13
onkeydown="javascript:if (event.which || event.keyCode){if ((event.which == 13) || (event.keyCode == 13)) {document.getElementById('btnSearch').click();}};"
Run Code Online (Sandbox Code Playgroud)
这只是我最近的一个项目所得到的......我在网上找到了它,我不知道在普通的旧JavaScript中是否有更好的方法.
Gib*_*olt 13
keypress
和event.key === "Enter"
现代JS!const textbox = document.getElementById("txtSearch");
textbox.addEventListener("keypress", function onEvent(event) {
if (event.key === "Enter") {
document.getElementById("btnSearch").click();
}
});
Run Code Online (Sandbox Code Playgroud)
gar*_*row 12
虽然,我很确定只要表单中只有一个字段和一个提交按钮,即使页面上有另一个表单,点击输入也应该提交表单.
然后,您可以使用js捕获表单onsubmit,并执行您想要的任何验证或回调.
NVR*_*VRM 12
没有人注意到html attibute"accesskey",它已经有一段时间了.
这是一种没有javascript方式的键盘快捷键的东西.
只是像这样使用.html属性本身就足够了,我们可以根据浏览器和操作系统更改占位符或其他指标.该脚本是一种未经测试的划痕方法,可以提供一个想法.您可能想要使用浏览器库检测器,如微小的bowser
let client = navigator.userAgent.toLowerCase(),
isLinux = client.indexOf("linux") > -1,
isWin = client.indexOf("windows") > -1,
isMac = client.indexOf("apple") > -1,
isFirefox = client.indexOf("firefox") > -1,
isWebkit = client.indexOf("webkit") > -1,
isOpera = client.indexOf("opera") > -1,
input = document.getElementById('guestInput');
if(isFirefox) {
input.setAttribute("placeholder", "Access keys: ALT+SHIFT+Z");
} else if (isWin) {
input.setAttribute("placeholder", "Access keys: ALT+Z");
} else if (isMac) {
input.setAttribute("placeholder", "Access keys: CTRL+ALT+Z");
} else if (isOpera) {
input.setAttribute("placeholder", "Shortcut: SHIFT+ESCAPE->Z");
} else {'Point me to operate...'}
Run Code Online (Sandbox Code Playgroud)
<input type="text" id="guestInput" accesskey="z" placeholder="Acces shortcut:"></input>
Run Code Online (Sandbox Code Playgroud)
frh*_*rhd 11
这是所有YUI爱好者的解决方案:
Y.on('keydown', function() {
if(event.keyCode == 13){
Y.one("#id_of_button").simulate("click");
}
}, '#id_of_textbox');
Run Code Online (Sandbox Code Playgroud)
在这个特殊情况下,我确实有更好的结果使用YUI来触发已经注入按钮功能的DOM对象 - 但这是另一个故事......
Ali*_*aka 11
在Angular2中:
(keyup.enter)="doSomething()"
Run Code Online (Sandbox Code Playgroud)
如果你不想在按钮中有一些视觉反馈,那么不要引用按钮而是直接调用控制器是一个很好的设计.
此外,不需要id - 另一种在视图和模型之间分离的NG2方式.
小智 9
这次onchange尝试很接近,但是对于浏览器然后前进(在Safari 4.0.5和Firefox 3.6.3上)行为不端,所以最终,我不推荐它.
<input type="text" id="txtSearch" onchange="doSomething();" />
<input type="button" id="btnSearch" value="Search" onclick="doSomething();" />
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您还需要将"发布"按钮从"发布"更改为服务器并执行Js脚本.
<input type="text" id="txtSearch" onkeydown="if (event.keyCode == 13)
{document.getElementById('btnSearch').click(); return false;}"/>
<input type="button" id="btnSearch" value="Search" onclick="doSomething();" />
Run Code Online (Sandbox Code Playgroud)
小智 8
event.returnValue = false
Run Code Online (Sandbox Code Playgroud)
在处理事件时或在事件处理程序调用的函数中使用它.
它至少适用于Internet Explorer和Opera.
对于jquery mobile我必须这样做
$('#id_of_textbox').live("keyup", function(event) {
if(event.keyCode == '13'){
$('#id_of_button').click();
}
});
Run Code Online (Sandbox Code Playgroud)
要添加一个完全普通的JavaScript的解决方案,解决@ icedwater的问题表单提交,这里是一个完整的解决方案用form
.
注意:这适用于"现代浏览器",包括IE9 +.IE8版本并不复杂,可以在这里学习.
小提琴:https://jsfiddle.net/rufwork/gm6h25th/1/
<body>
<form>
<input type="text" id="txt" />
<input type="button" id="go" value="Click Me!" />
<div id="outige"></div>
</form>
</body>
Run Code Online (Sandbox Code Playgroud)
// The document.addEventListener replicates $(document).ready() for
// modern browsers (including IE9+), and is slightly more robust than `onload`.
// More here: https://stackoverflow.com/a/21814964/1028230
document.addEventListener("DOMContentLoaded", function() {
var go = document.getElementById("go"),
txt = document.getElementById("txt"),
outige = document.getElementById("outige");
// Note that jQuery handles "empty" selections "for free".
// Since we're plain JavaScripting it, we need to make sure this DOM exists first.
if (txt && go) {
txt.addEventListener("keypress", function (e) {
if (event.keyCode === 13) {
go.click();
e.preventDefault(); // <<< Most important missing piece from icedwater
}
});
go.addEventListener("click", function () {
if (outige) {
outige.innerHTML += "Clicked!<br />";
}
});
}
});
Run Code Online (Sandbox Code Playgroud)
小智 6
对于那些可能喜欢简洁和现代 js 方法的人。
input.addEventListener('keydown', (e) => {if (e.keyCode == 13) doSomething()});
Run Code Online (Sandbox Code Playgroud)
其中input是包含输入元素的变量。
在现代的,不推荐使用(不带keyCode
或onkeydown
)的Javascript中:
<input onkeypress="if(event.key == 'Enter') {console.log('Test')}">
Run Code Online (Sandbox Code Playgroud)
document.onkeypress = function (e) {
e = e || window.event;
var charCode = (typeof e.which == "number") ? e.which : e.keyCode;
if (charCode == 13) {
// Do something here
printResult();
}
};
Run Code Online (Sandbox Code Playgroud)
这是我的两分钱.我正在开发一个适用于Windows 8的应用程序,并且当按下Enter按钮时希望该按钮注册一个单击事件.我在JS中这样做.我尝试了几个建议,但有问题.这很好用.
要使用jQuery,请执行以下操作:
$("#txtSearch").on("keyup", function (event) {
if (event.keyCode==13) {
$("#btnSearch").get(0).click();
}
});
Run Code Online (Sandbox Code Playgroud)
要使用普通的JavaScript做到这一点:
document.getElementById("txtSearch").addEventListener("keyup", function (event) {
if (event.keyCode==13) {
document.getElementById("#btnSearch").click();
}
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1341049 次 |
最近记录: |