在我的HTML页面中,我有一个文本框供用户输入搜索关键字。当他们单击搜索按钮时,JavaScript函数将生成一个URL并在新窗口中运行。
当用户通过鼠标单击搜索按钮时,JavaScript函数可正常工作,但当用户按下ENTER键时没有响应。
function searching(){
var keywordsStr = document.getElementById('keywords').value;
var cmd ="http://XXX/advancedsearch_result.asp?language=ENG&+"+ encodeURI(keywordsStr) + "&x=11&y=4";
window.location = cmd;
}
<form name="form1" method="get">
<input name="keywords" type="text" id="keywords" size="50" >
<input type="submit" name="btn_search" id="btn_search" value="Search"
onClick="javascript:searching(); return false;" onKeyPress="javascript:searching(); return false;">
<input type="reset" name="btn_reset" id="btn_reset" value="Reset">
</form>
答案 0 :(得分:80)
正如scoota269所说,你应该使用onSubmit
代替,因为在文本框上按下输入最可能会触发表单提交(如果在表单内)
<form action="#" onsubmit="handle">
<input type="text" name="txt" />
</form>
<script>
function handle(e){
e.preventDefault(); // Otherwise the form will be submitted
alert("FORM WAS SUBMITTED");
}
</script>
如果你想在输入字段上有一个事件,那么你需要确保你的handle()
将返回false,否则表单将被提交。
<form action="#">
<input type="text" name="txt" onkeypress="handle(event)" />
</form>
<script>
function handle(e){
if(e.keyCode === 13){
e.preventDefault(); // Ensure it is only this code that rusn
alert("Enter was pressed was presses");
}
}
</script>
答案 1 :(得分:23)
使用onkeypress
。检查按下的键是否输入(keyCode = 13)。如果是,请调用searching()
函数。
<强> HTML 强>
<input name="keywords" type="text" id="keywords" size="50" onkeypress="handleKeyPress(event)">
<强> JAVASCRIPT 强>
function handleKeyPress(e){
var key=e.keyCode || e.which;
if (key==13){
searching();
}
}
以下是一个显示其实际效果的片段:
document.getElementById("msg1").innerHTML = "Default";
function handle(e){
document.getElementById("msg1").innerHTML = "Trigger";
var key=e.keyCode || e.which;
if (key==13){
document.getElementById("msg1").innerHTML = "HELLO!";
}
}
<input type="text" name="box22" value="please" onkeypress="handle(event)"/>
<div id="msg1"></div>
答案 2 :(得分:6)
试试这个......
HTML inline
onKeydown="Javascript: if (event.keyCode==13) fnsearch();"
or
onkeypress="Javascript: if (event.keyCode==13) fnsearch();"
的JavaScript
<script>
function fnsearch()
{
alert('you press enter');
}
</script>
答案 3 :(得分:5)
您可以使用javascript
ctl.attachEvent('onkeydown', function(event) {
try {
if (event.keyCode == 13) {
FieldValueChanged(ctl.id, ctl.value);
}
false;
} catch (e) { };
return true
})
答案 4 :(得分:2)
为您提供一些通用的jQuery ..
$('div.search-box input[type=text]').on('keydown', function (e) {
if (e.which == 13) {
$(this).parent().find('input[type=submit]').trigger('click');
return false;
}
});
这适用于假定文本框和提交按钮包装在同一个div上。在页面上使用多个搜索框进行处理
答案 5 :(得分:1)
在表单标记上使用onsubmit属性,而不是在提交上单击。
答案 6 :(得分:1)
您需要为onkeypress
操作创建处理程序。
<强> HTML 强>
<input name="keywords" type="text" id="keywords" size="50" onkeypress="handleEnter(this, event)" />
<强> JS 强>
function handleEnter(inField, e)
{
var charCode;
//Get key code (support for all browsers)
if(e && e.which)
{
charCode = e.which;
}
else if(window.event)
{
e = window.event;
charCode = e.keyCode;
}
if(charCode == 13)
{
//Call your submit function
}
}
答案 7 :(得分:1)
// jquery press check by Abdelhamed Mohamed
$(document).ready(function(){
$("textarea").keydown(function(event){
if (event.keyCode == 13) {
// do something here
alert("You Pres Enter");
}
});
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<textarea></textarea>
&#13;
答案 8 :(得分:1)
使用event.key
代替event.keyCode
!
function onEvent(event) {
if (event.key === "Enter") {
// Submit form
}
};
答案 9 :(得分:0)
<form action="#">
<input type="text" id="txtBox" name="txt" onkeypress="handle" />
</form>
<script>
$("#txtBox").keypress(function (e) {
if (e.keyCode === 13) {
alert("Enter was pressed was presses");
}
return false;
});
</script>
答案 10 :(得分:0)
这是简单的ES-6风格答案。要捕获“ enter”键并执行一些功能
<input
onPressEnter={e => (e.keyCode === 13) && someFunc()}
/>