2013-11-18 4 views
0

Вопрос здесь не в том, как я могу получить ТЕКСТ, но как я могу назначить строку TEXT переменной ColdFusion! мне это нужно:Как назначить ТЕКСТ (не VALUE) из SELECT OPTION в переменную с использованием Coldfusion 8?

<cfset myVariable = "the selected TEXT from my HTML SELECT control"> 

Вот что я пробовал:

<cfif IsDefined("Form.formCommand")> 
    <cfif Form.formCommand eq "save"> 
    ... 

     <script type="text/javascript"> 
     document.getElementById('hiddenManufacturerName').value = GetTextFromSelect('manufacturerId'); 
     </script>"> 

     <cfset ManufacturerName = Form.hiddenManufacturerName> 
     <cfdump var="#ManufacturerName#"><br> 
     <cfabort>... 


      function GetTextFromSelect(selectElementId) 
      { 
       var objSelect = document.getElementById(selectElementId); 
       var theText = ""; 
       if (objSelect.selectedIndex != -1) 
       { 
        theText = objSelect.options[objSelect.selectedIndex].text; 
       } 
       return theText; 
      } 

Когда я сбросить переменную выше я получаю пустую строку.

На стороне записки: Я нашел решение, в котором вы бы добавить текст в значение атрибута, а затем извлечь его, например, вместо

<option value="1">Manufacturer IBM</option> 

сделать следующее:

<option value="1, Manufacturer IBM">Manufacturer IBM</option> 

Я НЕ хочу идти по этому маршруту или придерживаться такого подхода. Должен быть способ сделать это.

Спасибо

+1

Я думаю, вы непонимание цепи событий. CF выполняется на сервере ** сначала **. К тому времени, когда запускается какой-либо код javascript, CF-код завершен. Если вы хотите захватить текст списка, вы должны запустить javascript-код (чтобы сохранить текст в поле формы) ** перед ** отправкой формы. – Leigh

+0

Почему вы не хотите использовать эффективный подход, который вы обнаружили? –

+1

А? Вызов кода javascript ** после ** отправленной формы не будет заполнять переменную CF FORM в следующей строке. [Процесс запроса/ответа ColdFusion] (http://cfmlblog.adamcameron.me/2012/10/the-coldfusion-requestresponse-process.html) – Leigh

ответ

0

Похожи, что вы пытаетесь предварительно выбрать выпадающее меню:

<select name="ManufacturerName"> 

<cfoutput query="qryManufacturer"> 
    <option value="#ManufacturerID#"> 
     <cfif ManufacturerID EQ form.ManufacturerID>selected</cfif> 
    #ManufacturerName#</option> 
</cfoutput> 

</select> 
+0

Нет, вопрос в том, «как я могу назначить строку TEXT переменной ColdFusion!» – Leigh

+0

James, у меня есть элемент управления HTML под названием «manufacturerId», и я пытаюсь получить ТЕКСТ выбранного значения после отправки формы. Я не разработчик ColdFusion, поэтому синтаксис ColdFusion для меня довольно новичок. Теперь с вашим ответом он указывает мне в правильном направлении; Я проверю, что делает тег SELECT на сайте Adobe. Я не совсем понял синтаксис выше. Я знаю, что вы перебираете все значения и проверяете, выбраны ли они, это просто странно ... синтаксис я имею в виду - спасибо – Max

+0

@Max - Это действительно не имеет ничего общего с ColdFusion. CF просто отображает все, что вы отправили с помощью метода = POST. '