javascript问题求解
在一个页面里面定义了一个FORM,就一个输入框输入名字,一个Submit按钮
<form action= "/maintain/maintain.do?operation=add " method= "post " name= "maintainForm ">
<table>
<tr>
<td>
<input type= "text " name= "corpName " size= '30 " maxlength= "60 " onKeyPress= "return handleEnter(this,event) ">
</td>
<td>
<input type= "button " name= "submit " value= "增加 " onKeyClick= "JavaScript:addSubmit(); ">
</td>
</tr>
</table>
<form>
然后页面中有如下JavaScript:
<script language= "javascript ">
<!--
window.document.maintainForm.corpName.focus();
//-->
</script>
<script language= "javascript ">
function addSubmit()
{
var mess= " ";
var val = window.document.maintainForm.corpName.value;
if( (val.length==0)||(val==null)||(val== " "))
{
mess=mess+ "公司名 ";
}
if(mess!= " ")
{
mess= "请输入 " + mess;
alert(mess);
return false;
}
window.document.maintainForm.submit();
}
function handleEnter(field,event)
{
var keyCode= event.keyCode ? event.keyCode:event.which ? event.which : event.charCode;
if (keyCode==13)
{
addSubmit();
}
}
</script>
比Form里面没有放submit属性的按钮,而是放一个普通按钮.当用户点击按钮的时候调用javascript先是判断用户是否输入了名字,没有的话会弹出对话框提示用户输入并在javascript函数addSubmit中返回false不进行表单提交,否则调用window.document.maintainForm.submit();进行表单提交.
同时,如果用户在输入框里面按回车,会调用handleEnter,进一步调用addSubmit进行输入值是否为空.
问题:发现用户在输入为空的情况下按了button或者回车键,对话框确实弹出来进行提示了,可是还是进行submit了!实在是没看出javascript代码有什么问题,还请帮忙看看?
------解决方案--------------------javascript代码有问题
1、你的button的属性“name”为 "submit ",当调用window.document.maintainForm.submit();的时候,不会调用submit提交。而是把这个解析为你的button按钮。提示没有这个属性错误。
解决方法:把button的name重命名,如submit1
2、你的butonn的中有这样一个event
onKeyClick= "JavaScript:addSubmit(); "
我刚查看了msdn2005,始终没有发现有onkeyclick这个event
我测试的时候,用onclick代替的。
3、就是函数function handleEnter(field,event)并没有返回值。
所以你在文本框中回车的时候,这个函数调用addSubmit()函数检测到text为空,函数addSubmit()返回的false。
但是,这并不是handleEnter(field,event)的返回值。所以还是提交了
解决方法
函数handleEnter(field,event)修改如下
function handleEnter(field,event)
{
var keyCode= event.keyCode ? event.keyCode:event.which ? event.which : event.charCode;
if (keyCode==13)
{
return addSubmit();//这里把addSubmit()的返回值,作为函数返回值就ok了。
}
}
以上3个地方,修改后,在win2003 dc ie6下测试成功。