在ColdFusion中将结构创建为按钮

时间:2018-08-02 17:28:17

标签: coldfusion structure

首先,我不太确定如何为这个问题加上标题,因此如果内容含糊,我深表歉意。我正在尝试使用ColdFusion创建购物清单,但遇到了一些麻烦。我希望删除按钮显示在已创建的项目旁边。我几乎可以完成所有工作,但是我对ColdFusion的结构了解不足,无法理解我做错了什么。它类似于React.js中的组件吗?我遇到一个问题,说未定义变量“按钮”。我假设这是因为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重写该值吗? Kinda在这里只是在黑暗中拍摄,但我将不胜感激。

谢谢大家!

1 个答案:

答案 0 :(得分:2)

因此您提交的表单不会有“按钮”结构。 首先要记住的是ColdFusion结构只是键/值对的集合(类似于JavaScript对象),除非设置了值,否则它将是不确定的。

在您的情况下,“表单”结构存在是因为您要使用input[type="submit"]将页面提交回自身。对于ColdFusion页面,该页面将为提交的表单中的每个命名输入创建一个带有键的表单结构,其值从那些元素的value属性中提取。

如果您尝试使用表单结构来处理删除项目,最好使用单选按钮/复选框选择要删除的项目,并使用提交的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