[英]CFForm validation and onclick before submit
在提交表单之前,我一直在尝试验证一些字段。 一旦通过CF验证了字段,如果用户未登录,我想弹出一个登录表单。但是,问题是没有验证就弹出了登录表单。
query.cfm
<cfif not isdefined("form.p1")>
<cfform name="inquire" action="inquiry.cfm" method="post">
<input type="hidden" name="p1" value="1">
<cfinput type="text" name="email" size="50" maxlength="50" required="yes" autofocus="on" validate="email">
<cfinput type="text" name="subject" size="50" maxlength="50" required="yes" validate="noblanks">
<cftextarea name="message" cols="45" rows="8" wrap="soft" required="yes" validate="noblanks"></cftextarea>
<cfif signedin>
<input type="submit" value=" Send ">
<cfelse>
<input type="submit" value=" Send " onclick="signin(); return false">
</cfif>
<cfelse>
do stuff....
</cfif>
“登录”功能将弹出登录表单。
到目前为止,我还尝试了以下方法:
任何帮助表示赞赏。 提前致谢。
@Jack,这只是使用Ajax进行表单字段验证的示例。 为了使用它,您可能需要对其进行一些更改。 而且,我更喜欢在这个简单的示例中使用html表单。 假设我们有一个validatoin.cfc,其方法名称为“ validation”,该参数带有一个arg。
<cffunction name="validation" access="remote" returntype="any" returnformat="JSON" output="false">
<cfargument name="args" type="any" default="">
<cfset var retval ='{"return":"false"}'>
<cfif len(trim(arguments.args))>
<cfset retval = '{"return":"true"}'>
</cfif>
<cfreturn retval>
</cffunction>
这是cfm文件的代码。
<div id="target">
<form name="inquire" action="TestOne.cfm" method="post">
<input type="hidden" name="p1" value="1">
<input id="email" type="text" name="email" size="50" maxlength="50" required="yes" autofocus="on" validate="email" ><br><br>
<input type="text" name="subject" size="50" maxlength="50" required="yes" validate="noblanks" ><br><br>
<textarea name="message" cols="45" rows="8" wrap="soft" required="yes" validate="noblanks" ></textarea>
</form>
</div>
<script>
jQuery("#target").on( "click", function(){
var d = $('#email').val();
$.ajax({
type: 'POST',
url: 'validation.cfc?method=validation',
dataType: "json",
data: { args: d },
success: function(data) {
if(data.return != 'true'){
alert("Please enter an valid email address"); }
}
});
}
</script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.