我的表单中有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
进行验证和更新?
答案 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>