2以1种形式提交按钮

时间:2017-03-28 07:26:13

标签: coldfusion

我的表单中有2个提交按钮。

<input type="submit" value="Save as Draft">
<input type="submit" value="Save">

基本上,我想要做的是当用户点击Save as Draft时,它会继续将所有表单详细信息带到_update.cfm(无需验证)以及用户点击{{1它将继续Save,然后转到_validate.cfm(验证并更新数据库。)

HTML:

_update.cfm

基本上,上述表单的作用是默认情况下<cfset tx_name = ""> <cfif isDefined("form.tx_name")> <cfset tx_name = form.tx_name> </cfif> <cfinclude template="_validate.cfm"> <cfif isDefined("form.tx_name")> <cfinclude template="_update.cfm"> </cfif> <form name="something"> <input type="text" name="tx_name" value="#tx_name#"> <input type="submit" value="Save as Draft"> <input type="submit" value="Save"> </form> ,当用户输入内容并提交时,它会在tx_name = " "中执行所有验证,然后继续_validate.cfm更新它。

这是用户点击_update.cfm按钮时的预期工作方式。但是,对于Save,我希望它跳过Save as Draft,并直接将所有表单字段数据带到_validate.cfm

以下是我的尝试:

尝试1:

我使用_update.cfm而不是<input type="submit" value="Save as Draft">。这并没有将表单字段带到<input type="button" value="Save as Draft" onClick="location.href='_update.cfm';",我找出原因,因为它只是在点击按钮时重定向到_update.cfm

所以这让我觉得我真的需要一个_update.cfm按钮(将表单数据带到_update.cfm页面)。

但是现在我失去了,因为我现在有2个提交按钮。其中一个是与submit合作,另一个是在没有_validate.cfm的情况下工作。

那么如何让_validate.cfm无法验证,更新并Save as Draft进行验证和更新?

3 个答案:

答案 0 :(得分:3)

我会走两条具有相同名称但价值不同的按钮。我还会使用按钮标签,以便我可以更好地控制显示与提交的值。如果显示需要改变,我就不必处理,我不必改变处理。最后但并非最不重要的是,我会将其包装起来,以便它只在post

中运行
 <cfscript>
 if (cgi.request_method == "post") {

     if (form.keyexists("tx_name") tx_name = form.tx_name;

     if form.SaveMode == "Save")   include "_validate.cfm";

     if (form.keyexists("tx_name") include "_update.cfm";
     }
</cfscript>

 <form name="something" method="post">
     <input type="text" name="tx_name" value="#tx_name#">
     <button type="submit" name="SaveMode" value="Save as Draft">Save As Draft</button>
     <button type="submit" name="SaveMode" value="Save">Save</button>
 </form>

答案 1 :(得分:2)

为此,您必须为两个提交按钮添加名称。使用该名称,我们可以阻止_validate.cfm包含,同时通过单击“另存为草稿”按钮提交表单。

表单方法也应该是POST,因此表单范围将在操作页面上提供,否则它将在URL范围内可用。

<cfset tx_name = "">

<cfif isDefined("form.tx_name")>
    <cfset tx_name = form.tx_name>
</cfif>

<cfif isdefined("form.Save")>
    <cfinclude template="_validate.cfm">
</cfif>

<cfif isDefined("form.tx_name")>
    <cfinclude template="_update.cfm">
</cfif>

<form name="something" method="post">
    <input type="text" name="tx_name" value="#tx_name#">
    <input type="submit" name="SaveAsDraft" value="Save as Draft">
    <input type="submit" name="Save" value="Save">
</form>

答案 2 :(得分:2)

我使用名为action的隐藏表单字段。在按钮上,我附加了onClick以更改action的值。在表单的操作页面上,我读取了该值并确定要执行的操作。 EX:

<input type="hidden" name="action" value="save" id="action"> 
<button type="submit" class="button button-basic-green" onclick="document.getElementById('action').value='save';"><span class="fa fa-save"></span> Save</button>
<button type="submit" class="button button-basic" onclick="document.getElementById('action').value='reload';"><span class="fa fa-repeat"></span> Save & Reload</button>
<button type="submit" class="button button-basic" onclick="document.location.href='./';return false;"><span class="fa fa-arrow-circle-o-left"></span> Cancel</button>