这一定比我写的要简单。我有一个表单,有一个onclick动作,它运行js提交表单值到另一个页面。如何允许用户按回车键来执行相同的操作?我试过一些onkeypress的东西,但没有工作。下面是表单和正在运行的js。
谢谢!
**更新的代码,以反映更多的我想做的…
<script type="text/javascript">
function getQueryValue(name) {
var match = (new RegExp('[?&;]' + name + '=([^&;#]*)')).exec(document.URL);
return match ? unescape(match[1]) : null;
}
var ext = "&ext="+getQueryValue('ext');
</script>
<script src="prototype.js"></script>
<script type="text/javascript">
function checkSubmit(e)
{
if(e && e.keyCode == 13) // if key is enter
{
doSubmit(); // call your submit function
}
}
</script>
</head>
<body>
<div id="dialNumber_form">
<form id="dialer" style="margin-bottom:0;">
<input id="numberBox" name="outnumber" onKeyUp="checkSubmit(event)" type="text">
<input id="submitButton" onsubmit="dosubmit()" type="button"/>
</form>
<div class="clear"></div>
</div>
<div id="success">
</div>
<script type="text/javascript">
function dosubmit( ) {
var par = $('dialer').serialize();
var url = par + ext;
new Ajax.Updater('success', 'dial.php', { method: 'post' , parameters: url , evalScripts: true } );
$('dialer').reset();
}
</script>
</body>
dial.php获取您在字段中输入的号码,检查它是否有效,并将其发送到我们的PBX进行拨号。如果您单击了提交按钮,就可以正常工作。如果按return(即使使用了更新的代码,如下所示),页面将刷新,outnumber框的内容将作为GET URL变量发布,而不是发送给dosubmit操作。当表单工作时,您会看到它保持在最初构建时的状态(dialout.htm?ext={extension number}
)
感谢所有的回复。让我试试你的一些建议,然后我再给你答复。
我不确定我是否清楚我需要完成什么。这整个事情是运行在一个iframe传递URL变量。我控制不了那件作品,所以我得利用现有的东西。当用户打开它时,URL看起来像.../dialout.htm?ext=1234
。使用分机号,连同输入到outnumber
框中的号码,进行呼叫(系统先拨分机号,然后超过号码)。它们应该被传递给dial.php进行处理,如果一切正常,则返回一个带有结果的成功响应(并进行调用)。如果点击拨号按钮,效果会很好。页面不会刷新,经过短暂的延迟后,弹出成功框并进行呼叫。如果按enter键,则刷新表单,URL变为.../dialout.htm?outnumber=<number>
。我想做点击拨号按钮所做的事情。我在这里尝试过的任何方法都不能解决这个问题(除非我真的很慢……)。什么好主意吗?
您应该将提交按钮设置为<input type="submit" id="submitButton" etc>
,然后附加onsubmit
处理程序。jQuery:
$("#dialer").submit(function() {
var result = doMyStuff();
if (result > 10) {
return false; // prevent the submit
}
else {
return true; // allow the submit to happen
}
});
参见jQuery .submit()文档。
返回false
阻止提交发生,true允许提交。(我通常不会加上&;return false否则返回true&;(return (result<=10);)但希望使真/假sumbit控制显式)
当使用AJAX进行提交时,您希望返回false
,以便抑制正常的提交。
更新:
返回false
来停止默认的事件处理,这些天,大多被弃用了。通常首选使用preventDefault()
。这将把我的示例更改为:
$("#dialer").submit(function(event) {
var result = doMyStuff();
if (result > 10) {
event.preventDefault(); // prevent the form submit
}
});
keyDown/keyUp监听器应该在输入而不是提交按钮
<input id="numberBox" name="outnumber" onKeyUp="checkSubmit(event)" type="text">
function checkSubmit(e)
{
if(e && e.keyCode == 13) // if key is enter
{
doSubmit(); // call your submit function
}
}
工作示例:http://jsfiddle.net/sVnMy/
这将监听输入字段上的按键,当按下回车键时,它将提交表单