На выбранном JavaScript не работает с раскрывающимся списком? - PullRequest
1 голос
/ 13 июля 2011

Я новичок в JavaScript.

У меня есть функция, которую я изменил, так что когда пользователь выбирает «Да» из выпадающего меню, он создает 3 текстовых поля в области div.

Вот мой код раскрывающегося списка:

    <select name="dosage" id="dosage" onchange="function dosage(sel)">
            <option value="No">No</option>
            <option value="Yes">Yes</option> 

    </select>
<div id="dosagearea"></div>

Это измененный мной javascript, который изначально создавал окно сообщения для пользователя, когда он что-то выбирал.

    function dosage(sel)
{
   if(sel.options.selectedIndex == 0)
   {

      return false;
   }


    else if(sel.options.selectedIndex == 'Yes')
       {
          x=document.createElement('input');
                    x.setAttribute('rows',1);
                    x.setAttribute('cols',20);
                    x.name='dosage_emitted';
                    document.getElementById('dosagearea').appendChild(x);

            x=document.createElement('input');
                    x.setAttribute('rows',1);
                    x.setAttribute('cols',20);
                    x.name='dosage_absorbed';
                    document.getElementById('dosagearea').appendChild(x)


            x=document.createElement('input');
                    x.setAttribute('rows',1);
                    x.setAttribute('cols',20);
                    x.name='dosage_period';
                    document.getElementById('dosagearea').appendChild(x)
       }
    } 

Я проверил с помощью firebug и ошибок JS не возвращалось, я думаю, что моя функция вызывается неправильно.

Спасибо

Ответы [ 3 ]

0 голосов
/ 13 июля 2011

Значением свойства onchange обычно является имя функции или некоторый JavaScript.Если вы хотите вызвать вашу функцию с элементом select в качестве параметра, вам нужно сделать

<select name="dosage" id="dosage" onchange="dosage(this)">

Обратите внимание, что это не рекомендуемый способ сделать что-то, поскольку он связывает ваш HTML с вашим JS.Вместо этого попробуйте добавить событие непосредственно в JS, например,

window.onload = function() {
    document.getElementById("dosage").onchange = dosage;
    function dosasage(event) {
        var sel = event.currentTarget;
    }
}
0 голосов
/ 13 июля 2011

лучше иметь поля уже в html с отображением: ни на входах, ни на заполнителях. и переключиться на отображение: блок при выборе yes. Также вам нужно изменить прослушиватель событий на onchange = "dosage (this)"

или сделай так

<select name="dosage" id="dosage" onchange="document.getElementById('dosagearea').style.display = this.options.selectedIndex ? 'block' : 'none'">
   <option value="No">No</option>
   <option value="Yes">Yes</option> 
</select>
<div id="dosagearea" style="display:none">
    <input type="text" name="dosage_emitted" />
    <input type="text" name="dosage_absorbed" />
    <input type="text" name="dosage_period" />
</div>

вот оно в действии http://jsfiddle.net/t4cy7/

0 голосов
/ 13 июля 2011

попробуйте следующее: onchange="dosage(this)"

...