2012-03-27 2 views
1

У меня есть следующий код, который отображает и включает скрытое поле, если выбрано «Другое», иначе это поле скрыто от просмотра и отключено.Включить поле, которое по умолчанию отключено

Type: <%= f.select(:origin_type, 
     [['origin X', 'x'], 
      ['Other', 'Other'], 
      ['Origin Y', 'y'] 
      ], 
     {:prompt => "Please select"}, 
     {:onchange => "if (this.value == 'Other') 
     {document.getElementById('otherOrigin').style.display = 'block'; 
     document.getElementById('otherSpecies').disabled = false ;} 
     else 
     {document.getElementById('otherSpecies').style.display = 'none'; 
     document.getElementById('otherSpecies').disabled = true ; }" 
     } 
     ) %> 



<span id="otherOrigin" style="display:none;"> If other, please state: <%= f.text_field :origin_type, :disabled=>true %></span> 

По умолчанию text_field «otherOrigin» скрыто и отключен, но я хотел бы, чтобы отобразить и включить его, если «Other» выбран. Код «document.getElementById('otherSpecies').disabled = false;», похоже, не включает его, если выбрано другое.

Любое предложение наиболее ценится.

ответ

1

для включения

Вы должны удалить disabled атрибут полностью от входа.

document.getElementById('otherSpecies').removeAttribute("disabled") ; 

отключить

Чтобы быть действительным XHTML вам необходимо установить disabled="disabled".

document.getElementById('otherSpecies').disabled = "disabled" ; 
1

Я думаю, вы должны указать id для select и text_field, чтобы избежать дублирования идентификатора. В вашем случае в элементе select и text_field будет одинаковый идентификатор, и js может испортиться.

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