有选择地禁用ColdFusion的内置表单验证的方法吗?

Kip*_*Kip 5 validation coldfusion

我正在使用一些旧代码.它使用内置的ColdFusion表单验证(即_required隐藏字段).我想在表单中添加一个取消按钮.取消按钮必须实际处理一些业务逻辑(所以我不能让它将location.href设置为其他页面).问题是,因为取消按钮是提交按钮,它会触发内置验证,并且用户会收到该字段所需的错误.

有没有办法禁用该特定提交按钮的验证?我宁愿不尝试修改构建表单的底层代码,因为它在一堆地方使用.这是我的代码的大大简化版本:

<cfif IsDefined("Form.OK")>
  You clicked OK!
<cfelseif IsDefined("Form.Cancel")>
  You clicked Cancel!
</cfif>

<cfoutput>
  <form action="#CGI.Path_Info#" method="POST">
    Enter Name: <input type="text" name="Name" value="" /><br/>
    <input type="hidden" name="Name_required" value="" />
    <input type="submit" name="OK" value="OK" />
    <input type="submit" name="Cancel" value="Cancel" />
  </form>
</cfoutput>
Run Code Online (Sandbox Code Playgroud)

我想到的一件事是让取消按钮的onclick删除DOM中任何隐藏的"_required"字段.这有效,但感觉非常hacky.这是我用于该方法的Javascript:

<script type="text/javascript">
  function removeRequiredFields() {
    var els = document.getElementsByTagName('input');
    for(var i = 0; i <= els.length; i++) {
      if(els[i].type == 'hidden' && els[i].name.endsWith('_required'))
        els[i].parentNode.removeChild(els[i]);
    }
  }
</script>
Run Code Online (Sandbox Code Playgroud)

Hen*_*nry 5

CF9 + - Application.cfc

this.serverSideFormValidation="false";
Run Code Online (Sandbox Code Playgroud)

http://www.raymondcamden.com/index.cfm/2009/7/12/My-first-ColdFusion-9-scoop--disable-server-side-validation

CF8 - Application.cfc

<cfset this.name = "myApplication">
<cfset url.form = structnew()/>
<cfset structappend(url.form,form)/>
<cfset structclear(form)/>
<cffunction name="onRequestStart">
    <cfset structappend(form,url.form)/>
    <cfset structdelete(url,"form")/>
</cffunction>
Run Code Online (Sandbox Code Playgroud)

http://www.cfinsider.com/index.cfm/2008/9/30/Getting-Around-ColdFusion-Form-Validation

  • 话虽如此,有选择地你可以这样做:`<cfif StructKeyExists(Form,'Cancel')> <cfset this.serverSideFormValidation = false /> </ cfif>` - 但实际上你应该正确修复它. (4认同)
  • 哇,不知道其中任何一个.**基普**:如果你完全禁用它,你可以自己重新实现它(它并不复杂).另外:您希望,我知道,由表单字段名称驱动的验证仍然与客户端验证一样不安全......如果您还没有_proper_服务器端验证,那么您的应用可能存在安全漏洞. (3认同)