繁体   English   中英

提交前进行CFForm验证和onclick

[英]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>

“登录”功能将弹出登录表单。

到目前为止,我还尝试了以下方法:

  1. onSubmit而不是onClick。 但我不想在用户登录之前提交表单。
  2. 将onClick放入CFFORM标记中,但CF验证和登录屏幕将同时弹出。 在关闭CF字段验证屏幕但仅完成登录屏幕后,将提交空白表格,即不进行验证。
  3. 使用CFINPUT标记而不是INPUT。 没有影响,但也弄乱了按钮文本。

任何帮助表示赞赏。 提前致谢。

@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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM