Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: добавление элемента в зависимости от быранной опции в select-e
 
 автор: dimon   (27.08.2007 в 11:52)   письмо автору
 
 

---Простите за ошибку в названии---

Подскажите, пожалуйста: хочу сделать так, чтобы при выборе опции в выпадающем списке, появлялся новый элемент на странице. Какой элемент, зависит от выбранного элемента.


Установка: <select id="install" size="1" onChange="additionalOptions()">
  <option value="void">---Выбрать внешний вид---</option>
  <option value="simple">без таблицы</option>
  <option value="table">с таблицей</option></select><br>
  
<div id ="with_table" style="visibility:hidden;">
Количество групп: <select name="numrows" onChange="createGroups(this.options[selectedIndex].value)">
  <option value="0">---Выбрать количество групп---</option>
  <option value="1">1</option>
  <option value="2">2</option>
  <option value="3">3</option></select></div>

Скрипт я нарисовал такой:

function additionalOptions() {
    var x = document.getElementById('install2');
    
    switch (x.options[selectedIndex]) {
    case 1:
    document.getElementById('install_no_table').style.visibility = "visible"
    break
    case 2:
    document.getElementById('with_table').style.visibility = "visible"
    break
}


Мне кажется, что теоретически все верно написано, но почему не работает понять не могу. Взгляните свежим взглядом, а то я уже достался колдовать над ним. Уже десятки вариантов перепробовал, но почему не работает понять не могу. И еще, если возможно, подскажите, как должен выглядеть правильный скрипт для MSIE.
Спасибо!

   
 
 автор: bronenos   (27.08.2007 в 12:18)   письмо автору
 
   для: dimon   (27.08.2007 в 11:52)
 

    var x = document.getElementById('install2');

+ я бы посоветивал onChange="additionalOptions(this)" и проверять x.value а не x.options[selectedIndex]

   
 
 автор: dimon   (27.08.2007 в 12:32)   письмо автору
 
   для: bronenos   (27.08.2007 в 12:18)
 

что-то я не пойму: почему проверять x.value если мне нужно знать какая опция выбрана? т.е. у тега select может быть значение что-ли (просто не встречал такого...) Это ж если var x обращается к элементу на странице с определенным id, то надо от нее переходить дальше, т.е. в список опций? или я не правильно все понимаю (только учусь)

А с install2, просто ошибка вышла, у меня код написан верно в файле с функциями ))

   
 
 автор: bronenos   (27.08.2007 в 12:54)   письмо автору
 
   для: dimon   (27.08.2007 в 11:52)
 

Установка: <select size="1" onChange="additionalOptions(this)"> 
  <option value="void">---Выбрать внешний вид---</option> 
  <option value="simple">без таблицы</option> 
  <option value="table">с таблицей</option></select><br> 
   
<div id ="with_table" style="visibility:hidden;"> 
Количество групп: <select name="numrows" onChange="createGroups(this.options[selectedIndex].value)"> 
  <option value="0">---Выбрать количество групп---</option> 
  <option value="1">1</option> 
  <option value="2">2</option> 
  <option value="3">3</option></select></div>



var nt = document.getElementById("install_no_table");
var wt = document.getElementById("with_table");

function additionalOptions(obj)

  switch (obj.value)
  { 
    case "simple":
      nt.style.display = "block";
      wt.style.disply = "none";
      break; 
    case "table": 
      nt.style.display = "none";
      wt.style.disply = "block";
      break; 
  }
}


попробуйте так (я написал display)

   
 
 автор: dimon   (27.08.2007 в 14:48)   письмо автору
 
   для: bronenos   (27.08.2007 в 12:54)
 

странно, но тоже не работает. слово "disply" на "display", я исправил...

тут еще вот какая странность. Я решил для проверки ввести несколько примеров, которые должны были бы быть рабочими. Итак:

Enter your name:
<input type="text" id="fname"
onchange="upperCase(this.id)">

<script type="text/javascript">
function upperCase(x)
{
var y=document.getElementById(x).value
document.getElementById(x).value=y.toUpperCase()
}


И


<INPUT TYPE="text" NAME="userEmail" onChange="validateInput(this.value)">
</form>
<script type="text/javascript">
this.myForm.userEmail.focus();
this.myForm.userEmail.select();

function validateInput() {
userInput = new String();
userInput = this.myForm.userEmail.value;
 if (userInput.match("@"))
    alert("Thanks for your interest.");
 else
    alert("Please check your email details are correct before submitting");
}
</script>


Из них работает только первый. Я пробовал еще несколько примеров, но ни один не работает. Javascript в FF включен.

   
 
 автор: bronenos   (27.08.2007 в 16:05)   письмо автору
 
   для: dimon   (27.08.2007 в 14:48)
 

onChange="this.value=this.value.toUpperCase()"

function validateInput() { 
var userInput = document.myForm.userEmail.value; 
 if (userInput.indexOf("@") > -1) 
    alert("Thanks for your interest."); 
 else 
    alert("Please check your email details are correct before submitting"); 
}

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования