这比我做的要容易得多。我有一个具有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。这是有效的,假设您单击提交按钮。如果按回车键(即使使用更新的代码,如下所示),页面也会刷新,并且outnumber框的内容将作为GET URL变量发布,而不是发送到dosubmit操作。当表单有效时,您会看到它保持原始构建(dialout.htm?ext={extension number}
)
感谢所有回复。让我试试你的一些建议,我会回复你。
我不确定自己需要完成的事情。整个过程都是在传递URL变量的iframe中运行。我无法控制那件作品,所以我需要处理我所拥有的作品。当用户打开它时,URL看起来像.../dialout.htm?ext=1234
。使用扩展名以及输入outnumber
框中的号码来发出呼叫(系统拨打分机号码,然后是号码)。应将它们传递给dial.php进行处理,如果一切正常,则会返回成功响应结果(并进行调用)。如果单击拨号按钮,这很有用。页面不刷新,短暂延迟后,弹出成功框并发出呼叫。如果按下Enter键,表单将刷新,并且URL将更改为.../dialout.htm?outnumber=<number>
。我想让Enter执行点击拨号按钮的操作。我在这里尝试的任何东西都没有真正起作用(除非我真的很慢......)。有什么想法吗?
答案 0 :(得分:1)
您应该设置提交按钮<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
}
});
返回false
会阻止提交,true允许。 (我通常不会把“return false else return true”(返回(结果&lt; = 10);)但是想使真/假sumbit控件显式化)
使用AJAX进行提交时,您需要返回false
,以便正常提交被禁止。
目前,返回false
停止默认事件处理的情况大多已弃用。通常首选使用preventDefault()
。这会改变我的例子:
$("#dialer").submit(function(event) {
var result = doMyStuff();
if (result > 10) {
event.preventDefault(); // prevent the form submit
}
});
答案 1 :(得分:0)
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/
这将按下输入栏上的按键,当按下回车键时,它将提交表格