2013-07-25 2 views
0

Итак, у меня есть оператор select, который должен заполнить цикл в javascript. У меня очень простые знания о JS. У меня здесь есть очень простой холод, который я использую. Проблема в том, что одна из них - клиентская и другая серверная.Выберите Statement для цикла через другой javascript

Мне нужен первый оператор select, чтобы пройти туда, где мой cfloop находится внутри javascript. Мне нужно как-то изменить, что в яваскрипте цикла (где он говорит, что $ (документ) .ready (функция() {). Я не знаю, как. Может кто-нибудь помочь?

<cfoutput> 

    <script type='text/javascript' src='/jquery-1.8.2.js'></script> 
    <script type="text/javascript"> 
    function changeHiddenInput (objDropDown) 
    { 
     var objHidden = document.getElementById("hiddenInput"); 
     objHidden.value = objDropDown.value; 
    } 

    </script> 
    </head> 
    <body> 

    <cfquery name="Types" datasource="DSN"> 
    SELECT Taking.*, Type.* 
    FROM Taking 
    INNER JOIN Type ON Taking.Taking_TypeID = Type.Type_ID 
    ORDER BY Type_ID 
    </cfquery> 

    <form>How many to change? 
     <select id="dropdown" name="dropdown" onchange="changeHiddenInput(this)"> 
     <cfloop index="ABC" from="1" to="12" step="1"> 
      <option value="#ABC#">#ABC#</option> 
     </cfloop> 
     </select> 

     <input type="text" name="hiddenInput" id="hiddenInput" value="" /> 
    </form> 

    <br> 
    <br> 
    <cfset Changing=4> 
    <script type="text/javascript"> 
    $(document).ready(function(){ 
    <cfloop index="I" from="1" to="#Changing#" step="1"> 
    $('.box#I#').hide(); 
    $('##dropdown#I#').change(function() { 
     $('.box#I#').hide(); 
     $('##div' + $(this).val()).show(); 
    }); 
    </cfloop> 
    }); 
    </script> 

    <form> 
    <cfloop index="J" from="1" to="#Changing#" step="1"> 
    <select id="dropdown#J#" name="dropdown#J#"> 
    <option value="0">Choose</option> 
     <cfloop query="Types" startrow="1" endrow="#Types.recordcount#"> 
      <option value="area#J##Type_ID#">Change over #Type_Name#</option> 
    </cfloop> 
    </select> 
    <br> 

    <cfloop query="Types" startrow="1" endrow="#Types.recordcount#"> 
    <div id="divarea#J##Type_ID#" class="box#J#"> 

     <cfquery name="GetQuestions" datasource="DSN"> 
     SELECT Questions.* 
     FROM Questions 
     WHERE Questions_OrgID=1 
     AND  Questions_TypeID=#Types.Type_ID# 
     ORDER BY Questions_Rank 
     </cfquery> 

     <cfloop query="GetQuestions"> 
      #Questions_Question#<br> 
     </cfloop> 

    </div> 
    </cfloop> 
    <br> 
    <br> 
    </cfloop> 

    </form> 
    </cfoutput> 
+0

Возможно, вы можете уточнить, почему вам нужно смешивать ColdFusion и JS-код вместе? PS. Кажется довольно пугающим иметь SQL-запросы в том, что я предполагаю «клиентский» код ... (Просто говорю о моем опыте Java/C#. Я не знаю CF.) – user1766760

+0

@ user1766760 - в .cfm-файле содержимое в тегах '' будут чисто серверными (и даже любые теги, начинающиеся с ' duncan

+1

Кроме того, вы можете приблизиться к этому с неправильного угла. Можете ли вы сделать резервную копию и рассказать нам, что вы пытаетесь сделать на простом английском (а не в коде)? – Leigh

ответ

0

Я не совсем . убедитесь, что вы пытаетесь сделать, однако вы можете превратить что-то вроде этого:

$(document).ready(function(){ 
    <cfloop index="I" from="1" to="#Changing#" step="1"> 
    $('.box#I#').hide(); 
    $('##dropdown#I#').change(function() { 
     $('.box#I#').hide(); 
     $('##div' + $(this).val()).show(); 
    }); 
    </cfloop> 
    }); 

в чем-то вроде:

$(document).ready(function(){ 
    for (var i = 1; i <= #Changing#; i++) 
    { 
     $('.box' + i).hide(); 
     $('##dropdown' + i).change(function() { 
      $('.box' + i).hide(); 
      $('##div' + $(this).val()).show(); 
     }); 
    } 
}); 

Update: на самом деле это звучит так, будто это полностью решение JS?

function changeHiddenInput (objDropDown) { 
    for (var i = 1; i <= objDropDown.value; i++) 
     { 
      $('.box' + i).hide(); 
      $('##dropdown' + i).change(function() { 
       $('.box' + i).hide(); 
       $('##div' + $(this).val()).show(); 
      }); 
    } 
} 
+0

Дункан - это правильный путь. Как мне получить это значение # Изменение # в цикле будет заселено из первого меню выбора (где вы выбираете 1-12? В моем примере есть дополнительный код, потому что я не знаю, что делаю. – Adam

+0

ah ok. это становится просто ответом JS. Из 'changeHiddenInput' делать то, что у вас в настоящее время есть в document.ready(). Вы по-прежнему можете установить глобальную переменную JS из Coldfusion для максимального значения по умолчанию:' var Changing =# someValue #; ' – duncan

Смежные вопросы