我正在为Ruby on Rails 3.0使用Bootstrap 4.2.5,因此我需要这样做,以便当用户从下拉菜单中选择选项“否”时,以这种形式显示下一个文本字段,否则文本字段保持隐藏状态。我已经找到了与此解决方案类似的问题,但是我无法使用Bootstrap表单来实现它,这是我的尝试:

下拉输入:
  <%= f.select :answer, [["Yes", 1], ["No", 0]], label: "Do you wish to bla bla? ", class: "selectpicker", Id: "selectpicker" %>

切换输入(选择“否”时应显示):
  <%= f.text_area :explain , label: "Please explain why not", Id: "sdd"%>

Javascript:

 ("selectpicker").change(function changetextbox());
 function changetextbox()
{
    if (document.getElementById("selectpicker").value === 0 ) {
        document.getElementById("sdd").disable='true';
    } else {
        document.getElementById("sdd").disable='false';
    }
}


`

我尝试将value === 0更改为value == 0,将0更改为No,但是仍然不起作用。

它们按此顺序出现在我的代码中,但是我不确定如何将其与bootstrap表单标记一起使用。提前致谢。

参考:这是我从中获得此代码的问题
Enable/disable of textbox on option selected from drop down menu

最佳答案

$(document).on('change', '#selectpicker', changetextbox);

function changetextbox() {
  if (document.getElementById("selectpicker").value === '0') {
    document.getElementById("sdd").disabled = true;
  } else {
    document.getElementById("sdd").disabled = false;
  }
}



您忘记了$,并且没有selectpicker选择器,使用jQuery时必须使用.selectpicker#selectpicker之类的类或ID(取决于HTML)。
没有disable,必须使用disabled,并且不能对truefalse使用引号。
您不能使用.change(function changetextbox()),而只能使用$(document).on('change', '#selectpicker', changetextbox)
0必须用引号引起来。
我假设您的textarea仅被禁用(未被CSS隐藏)。


CODEPEN EXAMPLE

关于javascript - 从Bootstrap 3.0的下拉菜单中选择时切换元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38097455/

10-13 02:32