|
|
|
| Добрый вечер!
Дано:
<form action="" method="post" name="upl">
<div id="option">
<select name="jenre" style="width: 301px;">
<option value="fish">Рыба</option><option value="meat">Мясо</option><option value="bread">Хлеб</option><option value="bird">Птица</option><option value="other" onclick="exchange('option')">Другое</option>
</select>
</div>
</form>
<script type="text/javascript">
var oth = '<input type="text" name="jenre" maxlength="41" style="width: 301px;" id="other" />';
function exchange(ex){
document.getElementById(ex).innerHTML = oth;
document.upl.jenre.select();
document.upl.jenre.focus();
}
</script>
То есть, если выбрано поле "Другое" select превращается в <input type="text">
Мне нужно, чтобы в случае, если ничего написано здесь пользователем не будет, onblur возвращал первоначальный <select>.
То есть, как получить текст ИЗ <input...>? И если он ="", возвращать первоначальный <select name="jenre" style="width: 301px;"> по клику ЗА пределами <input...>?
Спасибо! | |
|
|
|
|
|
|
|
для: Deed
(26.09.2011 в 20:38)
| | я делал по другому, при нажатии на option др появляется окошко prompt() в текстовое поле которого и вводится новое название в твоём случае продукта.
в твоём примере надо дописать:
var oth = '<input type="text" onblur="bl(this)" name="jenre" maxlength="41" style="width: 301px;" id="other" />';
var select;
function exchange(ex){
var div = document.getElementById(ex);
select = div.innerHTML;
div.innerHTML = oth;
document.upl.jenre.select();
document.upl.jenre.focus();
}
function bl(t)
{
if(!this.value)
document.getElementById("option").innerHTML=select;
}
|
наверно как-то так. код не проверял. писал прям тут. | |
|
|
|
|
|
|
|
для: f111
(26.09.2011 в 21:32)
| | Спасибо, Евгений!
Выполни у себя вот это:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1251" />
<meta name="author" content="f111" />
<title>Input</title>
</head>
<body>
<form action="" method="post" name="upl">
<div id="option">
<select name="jenre" style="width: 301px;">
<option value="fish">Рыба</option><option value="meat">Мясо</option><option value="bread">Хлеб</option><option value="bird">Птица</option><option value="other" onclick="exchange('option')">Другое</option>
</select>
</div>
</form>
<script type="text/javascript">
var oth = '<input type="text" name="jenre" maxlength="41" style="width: 301px;" id="others" onblur="check()" />';
function exchange(ex){
document.getElementById(ex).innerHTML = oth;
document.upl.jenre.select();
document.upl.jenre.focus();
}
//alert('JavaScript is working!');
</script>
<br />
<script type="text/javascript">
var text_inp = document.upl.elements['jenre'].value;
function check(){
document.getElementById('check_inp').innerHTML = text_inp;
}
</script>
<br /><br /><h2>Проверка</h2>
<br />
<p id="check_inp"></p>
<br />
</body>
</html>
Мне НЕ важно, чтО напишут в <input type="text" name="jenre" maxlength="41" style="width: 301px;" id="others" onblur="check()" />, мне нужна проверка пустое это поле, или нет. Я никак не могу получить его значение!
Просто, этот скрипт, я понял, выполняется, когда еще НЕ было клика по "Другое"... | |
|
|
|
|
|
|
|
для: Deed
(26.09.2011 в 21:42)
| | почему ты пытаешься получить значение для переменной text_inp вне функции check ?
var text_inp = document.upl.elements['jenre'].value;
получает значение элемента с именем jenre, а это имя принадлежит тегу select, после ты заменяешь тег select на input, но ведь text_inp содержит значение тега select
при замене одного тега на другой, надо и значение text_inp обновить | |
|
|
|
|
|
|
|
для: f111
(26.09.2011 в 23:34)
| | почему ты пытаешься получить значение для переменной text_inp вне функции check? - ЗОЛОТЫЕ СЛОВА, Женя!!!
Вот итог:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1251" />
<meta name="author" content="f111" />
<title>Input</title>
</head>
<body>
<form action="" method="post" name="upl">
<div id="option">
<select name="jenre" style="width: 301px;">
<option value="fish">Рыба</option><option value="meat">Мясо</option><option value="bread">Хлеб</option><option value="bird">Птица</option><option value="other" onclick="exchange('option')">Другое</option>
</select>
</div>
</form>
<script type="text/javascript">
function exchange(ex){
var oth;
oth = '<input type="text" name="jenre" maxlength="41" style="width: 301px;" id="others" onblur="check()" />';
document.getElementById(ex).innerHTML = oth;
document.upl.jenre.select();
document.upl.jenre.focus();
}
</script>
<br />
<script type="text/javascript">
var text_inp = document.upl.elements['jenre'].value;
function check(){
var inp;
inp = document.getElementById('others').value.length;
if (inp == 0){
var first_value;
first_value ='<select name="jenre" style="width: 301px;"><option value="fish">Рыба</option><option value="meat">Мясо</option><option value="bread">Хлеб</option><option value="bird">Птица</option><option value="other" onclick="exchange(\'option\')">Другое</option></select>';
document.getElementById('option').innerHTML = first_value;
}
}
</script>
</body>
</html>
Хотя, есть ложка дегтя - почему сей скрипт не срабатывает в Хроме??? В данном случае не работает document.getElementById(ex).innerHTML = oth; | |
|
|
|
|
|
|
|
для: Deed
(27.09.2011 в 03:18)
| | у меня в лисе вторая функция не срабатывает.
>inp = document.getElementById('others').value.length;
>if (inp == 0){
1) почему не this?
2) зачем length?
3) зачем в first_value текст, когда можно динамически получить значение?
или option-ов будет всего 5?
4) ты забыл убрать - var text_inp = document.upl.elements['jenre'].value;
5) '<meta name="author" content="f111" />' - не надо примазываться, я такую фигню не мог написать)))
(я мог другую)
__________________
у тега select нет события onclick, может и у option его нет, тогда это объясняет поведение хрома
если верить http://semester.narod.ru/javascript/ то
Методов и событий у объекта Option нет.
У объекта Option нет свойства Name поэтому, к встроенным в документ объектам Option
можно обращаться только как к элементам массива options[] объекта Select.
|
______________
в первом сообщении как только увидел <option value="other" onclick="exchange('option')">Другое</option> удивился, и сразу же себя спросил, а чего-ж я пользовался onchange, а не onclick......оказывается не зря) | |
|
|
|