文章作者 : spring [ spring.z@elong.com ] Web URL : http://
上载日期 : 2000-12-26
通常,我们会在表单提交前通过OnSubmit属性对用户的输入做一些验证。但是在cold fusion中,要在<cfform>标记中应用onsubmit,则需要注意一点技巧。
下面借用linkfoxo的例子加以说明:
写一个简单的form:
<cfform action="" method="POST" name="form1" onsubmit="validate_data(this)">
<input type="Submit" >
</cfform>
生成html的代码如下.
<script LANGUAGE=JAVASCRIPT TYPE="text/javascript" >
<!--
function _CF_checkform1(_CF_this)
{
validate_data(this);
return true;
}
//-->
</script>
<FORM NAME="form1" METHOD=POST onSubmit="return _CF_checkform1(this)">
<input type="Submit" >
</FORM>
考查上面的代码可以发现, 由于cold fusion自动为我们生成一段onsubmit的验证脚本,且其用_CF_this 代替了原来的this。 所以我们的验证函数就不能正常实现其功能了。 要让其能正常工作,需要作如下修改:
<cfform action="" method="POST" name="form1" onsubmit="return validate_data(form1)">
<input type="Submit" >
</cfform>
此处有两点修改,一是用form1代替了原来的this, 二是加上了return 关键字. 除此之外,还需要修改验证函数 validate_data,将其改成根据数据的有效与无效返回true 或false,而不是直接提交表单。
这样就OK了。
看一下修改后的表单执行时的代码:
<script LANGUAGE=JAVASCRIPT TYPE="text/javascript" >
<!--
function _CF_checkform1(_CF_this)
{
return validate_data(form1);
return true;
}
//-->
</script>
<FORM NAME="form1" METHOD=POST onSubmit="return _CF_checkform1(this)">
<input type="Submit" >
</FORM>
:-)
|