表单校验javascript代码:
function MessageCheck(){
var MessageCheck = false;
var Title = document.MessageAdd.Title.value;
if (Title == "") {
alert("您是否忘记输入留言主题?");
document.MessageAdd.Title.focus();
return false;
}
return true;
}
响应ctrl+enter事件代码:
function MessageAddPressKey(eventobject)
{
if(event.ctrlKey&&window.event.keyCode==13)
{
if(MessageCheck()) document.all.Submit.click();
}
}
调用部分:
<body onKeyDown="MessageAddPressKey()">
<form name="MessageAdd" method="POST" onSubmit="return MessageCheck()" action="Add_Message.jsp">
测试时,不填表单数据,点击“提交”按钮会弹出警告“您是否忘记输入留言主题?”,但是直接按ctrl+enter提交表单时,会弹出两次警告“您是否忘记输入留言主题?”。
请问怎么解决?
function MessageCheck(){
var MessageCheck = false;
var Title = document.MessageAdd.Title.value;
if (Title == "") {
alert("您是否忘记输入留言主题?");
document.MessageAdd.Title.focus();
return false;
}
return true;
}
响应ctrl+enter事件代码:
function MessageAddPressKey(eventobject)
{
if(event.ctrlKey&&window.event.keyCode==13)
{
if(MessageCheck()) document.all.Submit.click();
}
}
调用部分:
<body onKeyDown="MessageAddPressKey()">
<form name="MessageAdd" method="POST" onSubmit="return MessageCheck()" action="Add_Message.jsp">
测试时,不填表单数据,点击“提交”按钮会弹出警告“您是否忘记输入留言主题?”,但是直接按ctrl+enter提交表单时,会弹出两次警告“您是否忘记输入留言主题?”。
请问怎么解决?
<script>document.onkeydown=MessageAddPressKey;</script>
就没有问题
不知道原先的body onkeydown为何会这样,通常都是用document.onkeydown
只测试出第二次的警告是因为form被提交的缘故,
至于如何引发就得请教高手了
能力有限^_^
漏了一句:
if(event.ctrlKey&&window.event.keyCode==13)
{
if(MessageCheck()) document.all.Submit.click();
return false;//忘记加了^_^
}
这是一次,然后form的onSubmit="return MessageCheck()"执行,这是第二次!
为什么会引起onsubmit
我也试过,如果没有添加onkeydown,就不会发生
不知是否知道其根本原因?:(
function MessageAddPressKey(eventobject)
{
if(event.ctrlKey&&window.event.keyCode==13)
{
document.all.Submit.click();
}
}这样就 可以了,不用显示校验表单
好像只要一用到了onKeyDown就会弹出两次警告提示。
欢迎大家交流javaweb开发经验,你的发言是对大家共同的鼓励!
onkeydown触发->MessageAddPressKey()->MessageCheck()->alert
->Title.focus()->原先onkeydown的回车键效果->form提交
->form.onsubmit->MessageCheck()->alert->Title.focus()->return false->提交失败至于为何有“原先onkeydown的回车键效果”,这个本质我也不知道
可以试试改成: ctrl + a (keyCode:65),Title里面就会输入a
好像是ctrl键效果没有了解决办法:
1:document.onkeydown里面加return false可以取消“原先onkeydown的回车键效果”
body onkeydown对于这个不起作用
2:MessageAddPressKey()不要调用MessageCheck(),就是说不要有Title.focus()
可以另外写函数
总之完善一下document.onkeydown就行了请各位大哥验收,如果不足请多提意见^_^
不太清楚你说的触发机制对不对,但是不加Title.focus()时照样弹出两次,不写在body里面也没有效果。
也许你提到的换个键这个办法可能可行。
不过ctrl+enter键对用户来说比较方便,也习惯了。
这个方法可行的,如果表单为空的话只弹出一次警告,达到了预期的效果。
问题得到解决了,但还是不知道用onKeyDown为什么会触发两次警告?
谢谢大家的参与!
有一个java web方面的群,欢迎朋友们进来交流经验。您的发言是对大家共同的鼓励和帮助!
在这里面回车的意思就是提交
所以当你按 Ctrl+Enter的时候执行了2次提交
所以会出现2次提示.
如果把输入控件改为textarea
或把提交快界键改了,可能就可以了。 比如改为Alt+S