2010-09-10 2 views
2

Хорошо, вот сделка, я пытаюсь перенаправить оператор switch на другую страницу в зависимости от того, какая опция выбрана в поле выбора. Ниже приведен пример, с которым я работаю и пытаюсь выяснить, любая помощь вообще будет сильно оценена.оператор switch с переадресацией

<html> 
<body> 
<form name="form1"> 
<select name="select1"> 
<option value="p1">p1</option> 
<option value="p2">p2</optino> 
</select> 
</form> 


<script type="text/javascript"> 
<!-- 
var sel = document.form1.select1; 
var txt = sel.options[sel.selectedIndex].text; 
var opt = sel.options[sel.selectedIndex].value; 

switch (sel) 
{ 
    case 'p1': window.location = 'http://www.yahoo.com' 
      break; 
    case 'p2': window.location = 'http://www.google..com' 
      break; 
} 



</script> 

<p>Set the variable to different value and then try...</p> 
</body> 
</html> 
+4

и вопрос есть? – mkoryak

ответ

1
  1. Вы должны связать обработчик события
  2. Коммутатор был с помощью неправильное значение

См http://www.jsfiddle.net/vDFpZ/

<html> 
<body> 
<form name="form1"> 
<select name="select1"> 
<option value="p1">p1</option> 
<option value="p2">p2</option> 
</select> 
</form> 


<script type="text/javascript"> 
    window.onload = function() { 
     document.getElementsByName("select1")[0].onchange = function() { 
      var sel = this.options[this.selectedIndex]; 
      var text = sel.text; 
      var val = sel.value; 

      switch (val) 
      { 
       case 'p1': window.location = 'http://www.yahoo.com' 
         break; 
       case 'p2': window.location = 'http://www.google..com' 
         break; 
      } 
     } 
    } 
</script> 
<p>Set the variable to different value and then try...</p> 
</body> 
</html>​ 
+0

приведенный выше пример Мэтта отлично работает, но мне нужно, чтобы он был связан с кнопкой отправки, а не загрузкой, когда происходит выбор. Я полный javascript newb, и я признаю, что у меня много чтения и практики, но мне нужен этот один аспект для проекта, который должен быть завершен очень скоро. – NewB

5

Я рекомендую вам избегать операторов switch. Как насчет этого?

<select name="select1"> 
    <option data-url="http://www.yahoo.com" value="p1">p1</option> 
    <option data-url="http://www.google.com" value="p2">p2</option> 
</select> 

И:

document.getElementById("select1").onchange = function() { 
    var url = this.options[this.selectedIndex].getAttribute("data-url"); 
    window.location = url; 
}; 

Edit: Я изменил пример использования html 5 data attributes (не волнуйтесь, они 100% поддерживаются во всех браузерах), так как вам нужно атрибут значение для чего-то остальное.

+0

Дело в том, что мне нужно, чтобы значение было чем-то определенным, поскольку оно забрасывается в базу данных mysql, спасибо вам. – NewB

+0

Это можно сделать, изменив URL-адрес данных на 'page.php? Value = CONTENTS_OF_VALUE_FIELD_HERE', чтобы передать переменную GET –

+0

oops, также забыл упомянуть, что изменение должно произойти при нажатии кнопки отправки – NewB

1

Я заметил, что вы не привязывали обработчик изменений к выбору, поэтому, когда пользователь выбирает значение, ничего не происходит.

1

У вас есть опечатки, ваш второй «/ вариант» и ваш «google.com». И инструкция switch не имеет ничего общего с вашей ошибкой. У вас нет слушателя событий/OnChange обработчик и вы не переключаются со значением от выбора опции

https://developer.mozilla.org/en/DOM/element.onchange https://developer.mozilla.org/en/DOM/element.addEventListener

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