0

我想从列表中循环选择的号码(cfselect)。我尝试了 getElementById 但只能在同一页面上显示它。我无法将此数字传递给循环。有人能帮我吗?谢谢你。

function item()

        var a = document.formName.numList.selectedIndex;
        document.getElementById('i').value = document. family.tBro.options[a].value;

        var n=document. family.tBro.options[a].value;


<!----OTHER INPUT TEXT BOXES --->

<cfform name="family" action="complete.cfm" method="post">

     How many brothers do you have?
     <cfselect name="tBro" onChange="item();" required="yes">
        <option value="1"> 1</option>
        <option value="2"> 2</option> 
        <option value="3"> 3</option>  
        <option value="4">4</option>
    </cfselect>                                                    

   <!---DISPLAY THE SELECTED CHOICE from getElementById--->
   Total number of brothers: <cfinput type="text" name="i" id="i">


   <!---LOOP x amount of time  from selected choice above. 
       For example, if 2 is selected, the below info will display two times
   --->

   <cfinput type="text" name="firstname"  required="yes">
   <cfinput type="text" name="lastname"  required="yes">
   <cfinput type="text" name="Age"  required="yes">
   <cfinput type="text" name="Ocupation"  required="yes">

   <!--- END LOOP--->             
4

1 回答 1

5

提示:说明您要完成的工作,而不是实施。我不得不重读几次以了解您的需求,在这种情况下,您的实现并不适合。

您正在尝试将 JavaScript 传递给 CFM 代码:这不是它的工作方式。ColdFusion 在服务器上渲染;JavaScript 在客户端呈现。在 item() 被调用的那一刻,ColdFusion 已经完成了所有的渲染;您不能使用 item() 的结果来影响 CF 循环。

如果没有真正复杂的 AJAX 解决方案,您有两种选择:

  1. 在调用 init() 时刷新浏览器,您在 url 中传递下拉值(不好,因为您会丢失其他表单字段的状态)
  2. 使用 jQuery 之类的其他东西来呈现您的动态文本字段列表。这可能是最好的方法,也是一种常见的方法。这样做的缺点是您需要在 jQuery 中实现诸如“必需”之类的东西,这没什么大不了的,而且是一个常见的用例。
于 2013-07-17T04:11:54.813 回答