在ColdFusion中创建一个结构作为按钮



首先,我真的不知道如何为这个问题命名,所以如果它很模糊,我很抱歉。我正试图使用ColdFusion创建一个购物清单,但遇到了一个小问题。我希望在已创建的项目旁边显示一个删除按钮。我几乎所有的东西都在工作,但我对ColdFusion的结构了解不够,无法理解我做错了什么。它与React.js中的组件相似吗?我遇到一个问题,说变量"button"没有定义。我认为这是因为structkeyExists无法识别单个按钮。为什么这适用于表单而不适用于按钮?

这是我的代码:

<cfif structKeyExists(form, "submitButt")>
<cfquery datasource="ESC-ADD-TECH">
INSERT INTO Main(itemDesc) VALUES('#itemDesc#')
</cfquery>
</cfif>
<cfif structKeyExists(button, "delete_butt")>
<cfquery datasource="ESC-ADD-TECH">
INSERT INTO Main(itemDesc) VALUES('#itemDesc#')
</cfquery>
</cfif>

<cfquery datasource="ESC-ADD-TECH" name="items">
DELETE FROM Main
WHERE itemDesc = '#itemDesc#'
</cfquery>
<body>
<div id="myDIV" class="header">
<h2>My Shopping List</h2>
<form method="POST">
<input type="text" name="itemDesc" placeholder="Title...">
<input name="submitButt" type="submit" class="addBtn">
</form>
</div>
<cfoutput query="items">
<li>#items.itemDesc#  <button class="delete" name="delete_butt">x</button></li>
</cfoutput>
</body>

有没有一种方法可以用一个结构来做我想做的事情?我最好用javascript创建按钮,并尝试将结构创建为布尔语句,然后让javascript重写该值吗?有点像是在黑暗中拍摄,但我会感谢任何帮助。

谢谢大家!

所以提交的表单中不会有"按钮"结构。首先要记住的是,ColdFusion结构只是键/值对的集合(类似于JavaScript对象(,除非设置了值,否则将是未定义的。

在您的案例中,"表单"结构之所以存在,是因为您使用input[type="submit"]将页面提交回自身。对于ColdFusion页面,它将为提交的表单中的每个命名输入创建一个具有键的表单结构,其值是从这些元素的值属性中提取的。

如果您试图使用表单结构来处理删除项目,则最好使用单选按钮/复选框来选择要删除的项目,并使用提交按钮的value属性设置要执行的操作。

以您的代码为例:

<cfparam name="form.action" type="string" default="none">
<cfswitch expression="#form.action#">
<cfcase value="insert">
<!---Your insert query goes here--->
</cfcase>
<cfcase value="delete">
<!---Your delete query goes here--->
</cfcase>
<cfdefaultcase></cfdefaultcase>
</cfswitch>
<!---Your select query--->
<body>
<form method="post" action="#">
<div id="myDIV" class="header">
<h2>My Shopping List</h2>
<input type="text" name="itemDesc" placeholder="Title...">
<button type="submit" name="action" value="insert">Submit</button>
</div>
<ul>
<cfoutput query="items">
<li>#items.itemDesc#  
<input type="radio" name="delDesc" value="#items.itemDesc#"/>
</li>
</cfoutput>
</ul>
<button type="submit" name="action" value="delete">Delete</button>
</form>
</body>

在这种情况下,插入值时使用form.itemDesc,删除项目时使用form.delDesc

最新更新