日期:2014-05-16  浏览次数:20436 次

表单事件嵌套,不好描述进来看吧:)
我在做个表单域的验证,比如如果他的value是“faint”,就选中faint,不让鼠标离开。但用户可以用ctrl   +   enter,跳过验证提交。
code如下:
<script>
function   test(obj){  
if(obj.value== "faint ")   {
alert( "something   wrong ");
obj.select();
return   false;
}
return   true;
}
function   b(){   alert( "b ");return   false;}

</script>

<body>
<form   id= "testForm ">
<input   type=text   value= "faint "   onblur= "test(this); "   /> <br/>
<input   type=text       /> <br/>
<input   type=submit   />
</form>
</body>


我的解决办法:在表单submit的时候重复验证字段,但又有新的问题,这样就先执行onblur   ,然后执行onsubmit,错误框弹出2次。
如何解决这个问题呢?大虾支招
<script>
function   test(obj){  
if(obj.value== "faint ")   {
alert( "something   wrong1 ");
obj.select();
return   false;
}
return   true;
}
function   checkForm(){  
var   obj   =   document.getElementById( "txt ");
if(obj.value== "faint ")   {
alert( "something   wrong2 ");
obj.select();
return   false;
}
}

</script>

<body>
<form   id= "testForm "   onsubmit= "return   checkForm() ">
<input   type=text   name=txt   value= "faint "   onblur= "test(this); "   /> <br/>
<input   type=text       /> <br/>
<input   type=submit   />
</form>
</body>

------解决方案--------------------
onsubmit判断一次就可以了,不过里面的代码不要写错,报错了的话就直接跳过去不验证了
------解决方案--------------------
禁止 Enter 提交页面,不过如果用户禁用脚本的话,一切都白搭,最好回 Server 再验证一次!

代码如下,L@_@K


<script language= "javascript " event= "onkeydown " for= "document ">
// 将 Enter 键 设置为 Tab 键
if ( event.keyCode == 13 )
{
event.keyCode = 9;
}
</script>
<script>

function test(obj){
if(obj.value== "faint ") {
alert( "something wrong1 ");
obj.select();
return false;
}
return true;
}
function checkForm(){
var obj = document.getElementById( "txt ");
if(obj.value== "faint ") {
alert( "something wrong2 ");
obj.select();
return false;
}
}

</script>

<body>
<form id= "testForm " onsubmit= "return checkForm() ">
<input type=text name=txt value= "faint " onblur= "test(this); " /> <br/>
<input type=text /> <br/>
<input type=submit />
</form>
</body>