2013-05-17 2 views
-1

У меня возникают проблемы, чтобы установить переключатель Case со значением A Выбор опций, вот код, я использую:переключатель случай с Select Option

<form id="selectcub" name="selectcub"> 
    <select id="cub01" name="cub01" class="cub"> 
     <option value="2013" selected>2013</option> 
     <option value="2012">2012</option> 
     <option value="2011">2011</option> 
     <option value="2010">2010</option> 
     <option value="2009">2009</option> 
     <option value="2008">2008</option> 
     <option value="2007">2007</option> 
    </select> 

    <select id="cub02" name="cub02" class="cub"> 
     <option value="01">01</option> 
     <option value="02">02</option> 
     <option value="03" selected>03</option> 
     <option value="04">04</option> 
     <option value="05">05</option> 
     <option value="06">06</option> 
     <option value="07">07</option> 
     <option value="08">08</option> 
     <option value="09">09</option> 
     <option value="10">10</option> 
     <option value="11">11</option> 
     <option value="12">12</option> 
    </select> 

    <a id="cubdl" href="#" class="button">Open</a> 
</form> 

<script type="text/javascript"> 
    $(document).ready(function(){ 
     switch($('#cub02 option:selected').val()) { 
      case 01: 
       alert("I am an alert box! 1"); 
      break; 
      case 02: 
       alert("I am an alert box! 2"); 
      break; 
      default: 
       // 
     } 
    }); 
</script> 

Что я делаю неправильно? Тут находится демо-версия: http://jsfiddle.net/whC97/

+0

Что вы пытаетесь сделать? – Gent

ответ

3

Проблема заключается в том, что вы являетесь обязательными для $(document).ready(), а не щелчок ссылки. Таким образом, javascript проверяет значение при загрузке, а значение равно 03, для которого у вас нет case.

Если вы изменили значение по умолчанию, выбранное на 01, и поместите случаи в кавычки, вы можете видеть, что он работает хорошо.

+0

Не знаю, почему это было приостановлено, поскольку это технически правильно, при загрузке страницы выбранный параметр имеет значение «03» в качестве значения, а переключатель работает только с pageload. – adeneo

+0

Действительно, спасибо вам большое, и извините за задержку ответа, я слишком занят в последнее время =/ Положите дела в кавычки и выполнили функцию «$ (« # cub02 »). Change (function() {" вместо «$ (document) .ready()». Большое вам спасибо и извините за глупый вопрос. –

+0

Нет такого понятия, как глупый вопрос. Возможно, вы хотели бы использовать функцию [** self anonymous anonymous **] (http://markdalgleish.com/2011/03/self-executing-anonymous-functions/), а также – Sunyatasattva

4

val() всегда будет возвращать строку. Попробуйте поставить «01», «02» и т. Д. В свой switch.

+0

* или * 'parseInt ($ ('# cub02 option: selected'). Val(), 10)' (но даже тогда начальный нуль будет отключен, поэтому проще использовать строки). –

+0

+1 Не только 'val' возвращает строку, но' switch' сравнивает случаи (в порядке) с помощью '===', поэтому нет принуждения типа. –

+0

+1 избили меня примерно на 4 секунды! – adeneo

1

Попробуйте это -

Demo -->http://jsfiddle.net/whC97/5/

$(document).ready(function() { 
    switch (parseInt($('#cub02').val())) { 
     case 1: 
      console.log("I am an alert box! 1"); 
      break; 
     case 2: 
      console.log("I am an alert box! 2"); 
      break; 
     default: 

    } 
}); 
+0

Вы должны установить базу, потому что здесь число начинается с 0: parseInt ($ ('# cub02'). Val(), 10) –

1

Две вещи: Один: как было сказано ранее, val() возвращает строку, поэтому вам нужно использовать, например, '01'. Двойка: функция вызывается сразу, когда dom готов, поэтому будет только предупреждение, если вы ищете «03», как это выбрано в вашем коде. Вы, вероятно, ищете слушатель событий ...

$(document).ready(function() { 
    $('#cub02').on('change', function(){ 
     switch($('#cub02 option:selected').val()) { 
      case '01': 
       alert("I am an alert box! 1"); 
      break; 
      case '02': 
       alert("I am an alert box! 2"); 
      break; 
     } 
    }); 
}); 

И скрипку: http://jsfiddle.net/whC97/11/

0

Вы пытаетесь использовать строковое представление, Вы должны использовать ParseInt (VAL) или переключить случай заявление использовать цитируемый строковую версию вашего номера

http://jsfiddle.net/whC97/9/

Модифицирование Пример Выдается:

$(document).ready(function(){ 
        var val = $('#cub02').val(); 
        switch(parseInt(val)) { 
        case 01: 
         alert("I am an alert box! 1"); 
        break; 
        case 02: 
         alert("I am an alert box! 2"); 
        break; 
        default: 
        // 
       } 
      }); 
Смежные вопросы