|
|
|
| ---Простите за ошибку в названии---
Подскажите, пожалуйста: хочу сделать так, чтобы при выборе опции в выпадающем списке, появлялся новый элемент на странице. Какой элемент, зависит от выбранного элемента.
Установка: <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.
Спасибо! | |
|
|
|
|
|
|
|
для: dimon
(27.08.2007 в 11:52)
| |
var x = document.getElementById('install2');
|
+ я бы посоветивал onChange="additionalOptions(this)" и проверять x.value а не x.options[selectedIndex] | |
|
|
|
|
|
|
|
для: bronenos
(27.08.2007 в 12:18)
| | что-то я не пойму: почему проверять x.value если мне нужно знать какая опция выбрана? т.е. у тега select может быть значение что-ли (просто не встречал такого...) Это ж если var x обращается к элементу на странице с определенным id, то надо от нее переходить дальше, т.е. в список опций? или я не правильно все понимаю (только учусь)
А с install2, просто ошибка вышла, у меня код написан верно в файле с функциями )) | |
|
|
|
|
|
|
|
для: 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) | |
|
|
|
|
|
|
|
для: 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 включен. | |
|
|
|
|
|
|
|
для: 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");
}
|
| |
|
|
|