Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 提交/模拟按键HTML_Javascript_Html - Fatal编程技术网

Javascript 提交/模拟按键HTML

Javascript 提交/模拟按键HTML,javascript,html,Javascript,Html,我有一个按钮,当我点击它时,我将另一个输入文本中的值提交给一个javascript,该javascript对这个问题执行一些不相关的操作 问:我是否可能通过按键盘上的回车键而不是单击按钮来触发此javascript 注意:这些输入不在表单标签中这里是一个完整的工作示例(在FF3.5上测试),如果您需要更大的可移植性,请使用jQuery之类的JS库来触发事件 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://ww

我有一个按钮,
当我点击它时,我将另一个输入文本
中的值提交给一个javascript,该javascript对这个问题执行一些不相关的操作

问:我是否可能通过按键盘上的回车键而不是单击按钮来触发此javascript


注意:这些输入不在表单标签中

这里是一个完整的工作示例(在FF3.5上测试),如果您需要更大的可移植性,请使用jQuery之类的JS库来触发事件

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>Onkeypress Test</title>
<script language="javascript">
function keyDowns(event) {
    if (event.keyCode == 13) {
        // If you are using jQuery just write this:
            // $('#testbutton').trigger('click');
            fireClickEvent(document.getElementById('testbutton'));
    }
}
// Event firing is not portable
function fireClickEvent(control) { 
    if (document.all) { 
        control.fireEvent("onclick"); 
    } else { 
        var clickEvent = window.document.createEvent("MouseEvent"); 
        clickEvent.initEvent("click", false, true); 
        control.dispatchEvent(clickEvent); 
    }
} 
</script>
</head>
<body onkeydown="keyDowns(event);">
<input type="button" name="button" value="Test" id="testbutton" onclick="alert('Clicked to me, you can do whatever')" />
</body>
</html>

按键试验
功能按键(事件){
如果(event.keyCode==13){
//如果您正在使用jQuery,只需编写以下内容:
//$('#testbutton')。触发器('click');
fireClickEvent(document.getElementById('testbutton');
}
}
//事件触发是不可移植的
函数fireClickEvent(控件){
如果(全部文件){
控件。fireEvent(“onclick”);
}否则{
var clickEvent=window.document.createEvent(“MouseEvent”);
clickEvent.initEvent(“click”,false,true);
control.dispatchEvent(点击事件);
}
} 

好吧,您可以使用表单(实际上不必提交表单)轻松完成:


按钮

只需
返回false
yourAction()

您不需要输入按钮

试着这样做:

<input type="text" name="btxt" onkeypress="submitValue(this.value)">

function submitValue(value)
{
  var key;

  if(event.keyCode)
   key= event.keyCode;
  else if(event.wich)
   key=event.wich;

  if(key==13)
   callFunction(value);
}

函数submitValue(值)
{
var键;
if(event.keyCode)
key=event.keyCode;
else if(event.wich)
key=event.wich;
如果(键==13)
调用函数(值);
}

您需要捕获onkeydown事件。我不知道你想把这个活动扩展到哪里——整个网页,还是仅仅是一部分

无论如何,假设您希望onkeydown事件发生在div标记中的所有内容上,例如

<div id="keyTrapper" onkeydown="trapReturn(event);">
    <input type="text" name="myText" id="myText" />
    <input type="button" name="button" id="myButton" onclick="alert(&quot;Clicked!&quot;);" />
</div>

在反输入文本中键入值时是否要按return键?他在输入文本的周围没有表单标记。请点击此答案,因为如果文本字段是活动控件,这也会触发按钮,这通常是您所期望的。此方法还可以添加按钮单击的服务器端处理,以便支持没有JavaScript的用户。我还认为,当网站的可访问性好时,这种解决方案是最好的。@TeKapa:Gandalf StormCrow没有说不允许和/或不可能添加表单标签。我会推荐这个解决方案,而不是选择作为答案的那个。它比选择的那个好,我同意你的观点;)为什么不呢?“onkeydown”是一个事件,如果浏览器支持,则按钮会自动支持。是的,但您必须关注按钮,然后按return键触发它。这不是使用场景吗?如果没有,则将keydown事件绑定到正文,当用户从任意位置按enter键时,触发按钮单击事件。但是如果您想首先关注按钮,甚至不需要触发onkeydown,只需按return,它就会触发单击。我已更新了我的帖子,我已在FF 3.5上对其进行了测试,它可能会在其他浏览器上失败,您可以使用JQuery之类的JS库来激发event.yes。然后,当您键入值时,按return键,它将调用您想要的函数
<div id="keyTrapper" onkeydown="trapReturn(event);">
    <input type="text" name="myText" id="myText" />
    <input type="button" name="button" id="myButton" onclick="alert(&quot;Clicked!&quot;);" />
</div>
    function trapReturn(event) {
        if (event.keyCode == 13) {
            var myButton = document.getElementById("myButton");
            myButton.click();
        }
    }