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

HTML+CSS+JavaScript

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

 

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

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

тема: Получить текст из <input type="text">
 
 автор: Deed   (26.09.2011 в 20:38)   письмо автору
 
 

Добрый вечер!
Дано:
<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...>?
Спасибо!

  Ответить  
 
 автор: f111   (26.09.2011 в 21:32)   письмо автору
 
   для: 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;
}

наверно как-то так. код не проверял. писал прям тут.

  Ответить  
 
 автор: Deed   (26.09.2011 в 21:42)   письмо автору
 
   для: 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()" />, мне нужна проверка пустое это поле, или нет. Я никак не могу получить его значение!
Просто, этот скрипт, я понял, выполняется, когда еще НЕ было клика по "Другое"...

  Ответить  
 
 автор: f111   (26.09.2011 в 23:34)   письмо автору
 
   для: 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 обновить

  Ответить  
 
 автор: Deed   (27.09.2011 в 03:18)   письмо автору
 
   для: 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;

  Ответить  
 
 автор: f111   (27.09.2011 в 11:46)   письмо автору
 
   для: 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......оказывается не зря)

  Ответить  
Rambler's Top100
вверх

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