Как отобразить выпадающий список при нажатии переключателя?

0

Я попытался вызвать эту функцию, но она не работает. Может ли кто-нибудь помочь мне узнать, что не так с моими кодами? Любая помощь будет оценена.

Это мой код для моего переключателя:

    <input type="radio" name="radioFrequency" onclick="myMth()" id="radioFrequency-0" value="Monthly (once a month)" />

Это мой код для моего выпадающего списка

    <div class="control-group" <%--style="display:none;"--%>>
  <label class="control-label" for="ddlMth">Withdrawal Day</label>
  <div class="controls">
    <select id="ddlMth" name="ddlMth" class="input-large">
      <option>Select day</option>
      <option>1</option>
      <option>2</option>
      <option>3</option>
      <option>4</option>
      <option>5</option>
      <option>6</option>
      <option>7</option>
      <option>8</option>
      <option>9</option>
      <option>10</option>
      <option>11</option>
      <option>12</option>
      <option>13</option>
      <option>14</option>
      <option>15</option>
      <option>16</option>
      <option>17</option>
      <option>18</option>
      <option>19</option>
      <option>20</option>
      <option>21</option>
      <option>22</option>
      <option>23</option>
      <option>24</option>
      <option>25</option>
      <option>26</option>
      <option>27</option>
      <option>28</option>
      <option>29</option>
      <option>30</option>
      <option>31</option>
    </select>
  </div>
</div>

Это мой код js для вызова функции:

<script>
        function myMth() {
            $("input[type='radio']").change(function() {

                if ($(this).val() == "Monthly (once a month)") {
                    $("#ddlMth").show();
                }
        else {
                    $("#ddlMth").hide();
        }
            });
            }

    </script>
  • 0
    В чем проблема с кодом? Не могли бы вы уточнить?
  • 0
    Ваш щелчок переключателем вызывает myMth (), который затем регистрирует обработчик события изменения.
Показать ещё 2 комментария

4 ответа

3

Попробуйте этот скрипт.

$(document).on("change","#wrapper input[type='radio']",function(){
    if($(this).find("input[type='radio']").prop("checked")){
        //Your Code Here
    }
});
1

Не нужно myMth() просто использовать это:

<input type="radio" name="radioFrequency" id="radioFrequency-0" value="Monthly (once a month)" />

Автор сценария:

 $("input[type='radio']").change(function () {
            if ($(this).val() == "Monthly (once a month)") {
                $("#ddlMth").show();
            } else {
                $("#ddlMth").hide();
            }
        });

jsfiddle

0

Прежде всего, вы используете jQuery для отображения и скрытия раздела div. В вашем элементе ввода вы добавили слушателя onClick, который является частью javascript. В вашем коде вы использовали метод изменения, который является частью jQuery. Таким образом, вы используете двух слушателей, которые не имеют никакого смысла.

Таким образом, вы можете решить эту проблему двумя способами.

1) используйте событие onclick в своей входной части и создайте для него сценарий

2) использовать событие click jquery (для этого вам не нужно предоставлять прослушиватели событий в элементе ввода)

примечание: событие click и change имеет много изменений в его работе.

Это подход javascript. Вы можете добиться этого по-разному. Это только один метод. Это срабатывает, когда вы нажимаете на переключатель.

<input type="radio" name="input_name" onclick="myMyth()" />


<script>
function myMth()
{
    var parentDiv=document.getElementById("ddlMth").parentNode.parentNode;  //gets the div element with class 'control-label'
    var displayStatus=parentDiv.style.display;//gets the status of display element of div
   if(displayStatus=="none")
   {
      //if display="none" make it block. so that dropdown will appear
        parentDiv.style.display="block";
   }
   else
   {
       //if display="block" make it block. so that dropdown will disappear
       parentDiv.style.display="none";
   }
}

второй подход - это jquery для этого, вам не нужно указывать каких-либо прослушивателей в элементе ввода

 <input type="radio" name="input_name" />

Здесь доступно множество решений jQuery. Используйте любой из них.

0

Выньте событие onclick, вы смешиваете javascript и jquery. Вам нужно что-то вроде этого:

<script>
$( function ()
{
    $("input[type='radio']").change(function() {
        if ($(this).val() == "Monthly (once a month)") {
            $("#ddlMth").show();
        }
        else {
            $("#ddlMth").hide();
        }
     });
});
</script>

Это создаст обработчик, который будет срабатывать при каждом изменении переключателя.

  • 0
    так где я могу поставить эту функцию? извините, я довольно слаб в этих областях
  • 0
    Положить его в голову будет работать.
Показать ещё 9 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню