传递DropDown选定值以及其他选定的查询结果集

时间:2011-01-20 20:47:02

标签: javascript javascript-events coldfusion

我有一个表单“test.cfm”它将值传递给操作页面“testAction.cfm”!

test.cfm执行以下操作: -

  1. 下拉框“fruitsList”。

  2. 查询“qryFruits”,用于提取数据然后显示查询结果集

  3. 每个查询结果集的“添加”按钮

  4. 它应该如何运作: -

    1. 将选择下拉列表“fruitsList”。

    2. 选择结果列表中的“添加”按钮后,将传递“查询结果集-CurrentRow”值。

      添加按钮正在传递“query-resultset -CurrentRow”值,但不是“下拉”值。

    3. 如何传递“下拉选择值”?

          <!--- test.cfm --->
          <script type="text/javascript" >
                function assign_fruits()
               //  
               {
                 var a = document.fruitsForm.fruitsList.selectedIndex;
                 document.getElementById('salesForce').value = document.fruitsForm.fruitsList.options[a].value; 
                 }
              </script>
      
          <form name="fruitsForm" >
          <table>
            <tr>
             <td>
              <select name="fruitsList" onChange="assign_fruits()">
               <option disabled="true">select One
               <option value="m1">apple
               <option value="m2" selected>orange
               <option value="m3">banana
               <option value="m4">grape
               <option value="m5">mango
              </select> 
             </td>
      <!--- Trying to assign the DD-value to an input field --->
       <input  name="salesForce" value=""> 
            </tr> 
           <cfquery name="qryFruits" datasoure="#dsn#">
            Select values from Fruits_Table
           </cfquery>
           <cfloop startrow="1" endrow="#qryFruits.recordcount#" query="qryFruits">
            <cfoutput>
            <tr> 
             <td><a href="testAction.cfm">Add</a></td>     
            </tr>   
            </cfoutput>
           </cfloop>
          </table>
      
          </form>
      

      请帮助。 输精管

5 个答案:

答案 0 :(得分:5)

你有点不同寻常,但我相信以下是你想要的:

 <cfdump var="#form#">

<!--- test.cfm --->
<cfset qryFruits = queryNew("fruitID,fruitName")>
<cfset queryAddRow(qryFruits, 2)>
<cfset querySetCell(qryFruits, "fruitID", 1, 1)>
<cfset querySetCell(qryFruits, "fruitName", "Kiwi", 1)>
<cfset querySetCell(qryFruits, "fruitID", 2, 2)>
<cfset querySetCell(qryFruits, "fruitName", "Lime", 2)>

<script type="text/javascript" >
    function assign_fruits() {
        var a = document.fruitsForm.fruitsList.selectedIndex;
        document.getElementById('salesForce').value = document.fruitsForm.fruitsList.options[a].value; 
    }
    function submit(id) {
        document.getElementById('fruitClicked').value = id;
        document.forms["fruitsForm"].submit();
    }
</script>

<form name="fruitsForm" id="fruitsForm" action="index.cfm" method="post">
    <p>
        <select name="fruitsList" onChange="assign_fruits();">
            <option value="">select One</option>
            <option value="m1">apple</option>
            <option value="m2" selected>orange</option>
            <option value="m3">banana</option>
            <option value="m4">grape</option>
            <option value="m5">mango</option>
        </select>
    </p>

    <!--- Trying to assign the DD-value to an input field --->
    <p>Fruit Slected from List Above: <input name="salesForce" id="salesForce" value=""></p>
    <p>Fruit Clicked Below: <input name="fruitClicked" id="fruitClicked" value=""></p>
    <cfloop startrow="1" endrow="#qryFruits.recordcount#" query="qryFruits">
    <cfoutput>
        <div></div><a href="##" onclick="submit(#qryFruits.fruitID#);">#qryFruits.fruitName#</a></div>
    </cfoutput>
    </cfloop>
</form>

请注意,您的某些元素中缺少导致JavaScript失败的“id”属性。

答案 1 :(得分:2)

我不太确定最终结果是什么,但你只是想把#values#中输出的内容传递给那个javascript函数吗?

您始终可以直接传递该值。

<tr>
     <td>#values#  </td> 
     <td><a href="test.cfm" onClick="assign_fruits(#values#);">Add</a></td>          
</tr> 

答案 2 :(得分:0)

你的javascript说 var a = document.fruitsForm.fruits.selectedIndex; 但你的表单字段不叫'fruits',它叫做fruitsList。试试

document.fruitsForm.fruitsList.selectedIndex;

代替。

答案 3 :(得分:0)

您的输出可以略微简化。但是我仍然有点不清楚你要做什么。 testAction.cfm的目的是什么?

<cfoutput query="qryFruits">
        <tr> 
            <td><a href="testAction.cfm?ID=#qryFruits.CurrentRow#">Add #qryFruits.Values#</a></td>           
        </tr>   
</cfoutput>

答案 4 :(得分:0)

好的,我还不确定你到底要做什么。我假设您要将参数salesForce传递给testAction.cfm。它的值应该是m1,m2,m3,......

所以基本上你需要让你的网址像testAction.cfm?salesForce=m1这是正确的吗?如果是这样,摆脱隐藏的表单字段和所有的JavaScript。是这样的情况,fruitsList下拉列表总是按顺序编号为m1 - mX吗? (即你不去m1,m79,m4,m2,m99等)。

这是一个假设 - 您的下拉列表中的水果列表是否与水果查询相对应?即它是同一个顺序的相同水果?如果是这样,你应该放弃下拉列表,只有链接(反之亦然)。

<!--- test.cfm --->
<cfquery name="qryFruits" datasoure="#dsn#">
  Select values from Fruits_Table
</cfquery>

<table> 
  <cfoutput query="qryFruits">
    <tr> 
        <td><a href="testAction.cfm?salesForce=m#qryFruits.CurrentRow#">Add #qryFruits.Values#</a></td>           
    </tr>   
  </cfoutput>
</table>