如何在键盘上提交表单
How to submit form on keypress?
我使用这个脚本在静态页面中搜索
但是我希望这个搜索当我在文本输入中键入,而不是当我点击按钮,我搜索,我发现任何这将工作:
onkeypress="this.submit();"
onkeyup="this.submit();"
onkeypress="document.forms["f1"].submit();"
onkeyup="document.forms["f1"].submit();"
但都不工作
我使用了与脚本的
相同的HTML<form id="f1" name="f1" action="javascript:void()" onsubmit="if(this.t1.value!=null && this.t1.value!='')parent.findString(this.t1.value);return false;">
<input type="text" id="t1" name="t1" value="Search" onfocus="if(this.value=='Search')this.value='';" size="20" onkeypress="this.submit();" />
<input type="submit" name="b1" value="Find" />
</form>
form.submit()不触发onsubmit。你应该实现一个函数。
你的onkeyup脚本是反直觉的,因为选择文本onkeyup需要模糊文本框焦点。
使用调用findString(this.value);
而不是submit的代码片段创建一个测试:
some sample text
<form id="f1" name="f1" action="javascript:void(0)" onsubmit="if(this.t1.value!=null && this.t1.value!='')parent.findString(this.t1.value);return false;">
<input type="text" id="t1" name="t1" value="Search" onfocus="if(this.value=='Search')this.value='';" size="20" onkeyup="findString(this.value);" />
<input type="submit" id="b1" name="b1" value="Find" />
</form>
Javascript:var TRange=null;
function findString (str) {
if (parseInt(navigator.appVersion)<4) return;
var strFound;
if (window.find) {
// CODE FOR BROWSERS THAT SUPPORT window.find
strFound=self.find(str);
if (!strFound) {
strFound=self.find(str,0,1);
while (self.find(str,0,1)) continue;
}
}
else if (navigator.appName.indexOf("Microsoft")!=-1) {
// EXPLORER-SPECIFIC CODE
if (TRange!=null) {
TRange.collapse(false);
strFound=TRange.findText(str);
if (strFound) TRange.select();
}
if (TRange==null || strFound==0) {
TRange=self.document.body.createTextRange();
strFound=TRange.findText(str);
if (strFound) TRange.select();
}
}
else if (navigator.appName=="Opera") {
alert ("Opera browsers not supported, sorry...")
return;
}
if (!strFound) alert ("String '"+str+"' not found!")
return;
}
你的报价有问题!这里的颜色编码显示了它!
onkeypress="document.forms["f1"].submit();"
^ ^
opens closes
sumbit在表单上,而不是元素上,这就是为什么this.submit
失败的原因。
你需要
this.form.submit()
正如Tom所说,调用form.submit()
不会触发onsubmit处理程序。onsubmit处理程序只在手动提交表单时调用。因此,如果您试图手动提交表单,您必须自己检查错误。