Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Почему value из текстового поля возвращает undefined? / 25 сообщений из 28, страница 1 из 2
19.01.2014, 02:55
    #38530818
Алексей Смирнов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему value из текстового поля возвращает undefined?
Здравствуйте! Странная вещь происходит...

В разделе <HEAD> есть скрипт:
Код: javascript
1.
2.
3.
4.
5.
6.
<script type="text/javascript">
$(function()
{
$("#txtDepart").autocomplete({ source: "ref_depart.php?enter="+encodeURIComponent(document.getElementById("txtEnter").Value), autoFocus: true, delay: 10 });
});
</script>



В нем используется значение из текстового поля "txtEnter": document.getElementById("txtEnter").Value .

При выполнении скрипта свойство Value имеет значение undefined, хотя в самом поле текст имеется. В чём может быть причина?

Вот фрагмент кода HTML с описанием поля:
Код: html
1.
<input type="text" id="txtEnter" name="txtEnter" maxlength="50" autofocus size="50">
...
Рейтинг: 0 / 0
19.01.2014, 03:06
    #38530821
asws
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему value из текстового поля возвращает undefined?
value нужно строчными буквами написать, если не поможет - искать элементы с таким-же id="txtEnter", у которых нет value.
...
Рейтинг: 0 / 0
19.01.2014, 03:12
    #38530823
Алексей Смирнов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему value из текстового поля возвращает undefined?
asws,

Написал маленькими буквами. Не помогло - результат тот же.
Полей с таким же именем на странице нет.
...
Рейтинг: 0 / 0
19.01.2014, 03:15
    #38530824
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему value из текстового поля возвращает undefined?
Алексей Смирнов, value со строчной буквы v пишется - javascript регистрозависимый язык
...
Рейтинг: 0 / 0
19.01.2014, 03:20
    #38530827
Алексей Смирнов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему value из текстового поля возвращает undefined?
bazile,

Пробовал - не помогает.

Ещё попробовал использовать конструкцию JQuery:
$("#txtEnter").val()
Тоже самое. Возвращает всегда значение, которое задано аттрибутом value в теге input (P.S. в теге input присвоил полю значение value по-умолчанию, вместо undefined стало отображать его), а из браузера текст, который я ввел в поле, игнорирует.
...
Рейтинг: 0 / 0
19.01.2014, 03:21
    #38530828
asws
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему value из текстового поля возвращает undefined?
Алексей Смирновasws,

Написал маленькими буквами. Не помогло - результат тот же.
Полей с таким же именем на странице нет.значит надо искать кириллицу, случайно попавшую в код,
ну сами там посмотрите, вам виднее...
...
Рейтинг: 0 / 0
19.01.2014, 03:22
    #38530830
Алексей Смирнов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему value из текстового поля возвращает undefined?
asws,

"значит надо искать кириллицу, случайно попавшую в код"

Тоже исключено. Я все проверил на много раз уже.
...
Рейтинг: 0 / 0
19.01.2014, 03:25
    #38530832
asws
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему value из текстового поля возвращает undefined?
Алексей Смирнов,

Значит значение source не обновляется после изменения value.
Никаких чудес ведь не бывает.
...
Рейтинг: 0 / 0
19.01.2014, 03:29
    #38530834
Алексей Смирнов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему value из текстового поля возвращает undefined?
asws,

Что такое "значение source"? Как его проверить?
Если вы имеете ввиду аттрибут source в методе autocomplete, то он здесь не причем. Здесь source - это входной аттрибут метода autocomplete. Если я вместо document.getElementById("txtEnter").Value напишу любую строку, то метод работает отлично. Это я проверил конечно же уже давно.
...
Рейтинг: 0 / 0
19.01.2014, 03:32
    #38530835
asws
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему value из текстового поля возвращает undefined?
Алексей Смирнов,

Поставьте onchange="alert(this.value)" в ваш input - и посмотрите, меняется value или нет.
Вы скорее всего не в том месте ищите ошибку.
...
Рейтинг: 0 / 0
19.01.2014, 03:39
    #38530836
Алексей Смирнов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему value из текстового поля возвращает undefined?
asws,

Да, в событии onchange this.value (а так же txtEnter.value, отображенный из события onchange другого поля) отображается корректно. Т.е. отображаются текущие значения, введенные пользователем.

А в моем скрипте $(function..., расположенном в разделе HEAD, value всегда отображается только то, которое было задано по-умолчанию в теге INPUT.
...
Рейтинг: 0 / 0
19.01.2014, 03:43
    #38530838
Алексей Смирнов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему value из текстового поля возвращает undefined?
Похоже, что это глюк библиотек jquery.js или jquery-ui.js, хотя у меня стоят последние версии библиотек - сегодня скачал с сайтов разработчиков.
...
Рейтинг: 0 / 0
19.01.2014, 03:44
    #38530839
asws
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему value из текстового поля возвращает undefined?
Алексей Смирнов... только то, которое было задано по-умолчанию в теге INPUT.
неправильная формулировка, правильная такая:
"только то, которое находится в теге INPUT в момент вызова функции."

Теперь понятнее?
...
Рейтинг: 0 / 0
19.01.2014, 03:48
    #38530840
Алексей Смирнов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему value из текстового поля возвращает undefined?
asws,

Нет, в том то и дело, что функция вызывается после каждого нажатия на кнопку клавиатуры. Естественно само поле уже содержит другой текст, отличный от того, который задан в теге INPUT.
...
Рейтинг: 0 / 0
19.01.2014, 03:50
    #38530841
asws
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему value из текстового поля возвращает undefined?
Алексей Смирновasws,

Нет, в том то и дело, что функция вызывается после каждого нажатия на кнопку клавиатуры. Естественно само поле уже содержит другой текст, отличный от того, который задан в теге INPUT.не работаю с jquery, но по-моему это неправильно, думаю правильно примерно так :
вызывать функцию после отработки очередного запроса на сервер (если value менялось), а не после нажатия каждой клавиши.
...
Рейтинг: 0 / 0
19.01.2014, 03:55
    #38530843
asws
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему value из текстового поля возвращает undefined?
и кстати, откуда уверенность, что value должно меняться в момент ввода символа?
другое дело - при потере фокуса, то-есть только в момент возникновения события change
...
Рейтинг: 0 / 0
19.01.2014, 03:55
    #38530844
Алексей Смирнов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему value из текстового поля возвращает undefined?
asws,

Библиотеку JQuery придумали для создания динамических страниц без запросов к серверу.

У меня в принципе родился в голове выход из ситуации:
1) при событии onclick в поле txtEnter сохранять значение txtEnter.value в глобальную переменную;
2) функция $(function()... при вызове из другого поля txtDepart будет читать значение поля txtEnter из глобальной переменной.

Потом проверю это, т.к. не знаю вообще как объявлять глобальные переменные, присваивать им значения и извлекать из них значения, т.к. синтаксис JavaScript начал изучать только сегодня) и не знаю пока как правильно это сделать.
...
Рейтинг: 0 / 0
19.01.2014, 03:59
    #38530845
asws
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему value из текстового поля возвращает undefined?
Алексей Смирнов,

дело не в библиотеке jQuery (которую придумали совсем не для того, что вы пытаетесь на неё перевалить),
она думать за вас не будет.
...
Рейтинг: 0 / 0
19.01.2014, 04:16
    #38530847
Алексей Смирнов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему value из текстового поля возвращает undefined?
asws,

Спасибо за помощь в любом случае.
...
Рейтинг: 0 / 0
19.01.2014, 12:27
    #38530925
Алексей Смирнов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему value из текстового поля возвращает undefined?
Тем не менее проблема не решена(

Вместо txtEnter.value использовал переменные.

В теге INPUT прописал событие oninput:
Код: html
1.
<input type="text" id="txtEnter" name="txtEnter" maxlength="50" autofocus value="ПО ТЭС" size="50" onchange="window.strEnter=this.value;">



В функции переменная window.strEnter почему то не видна( и выдает все тот же "undefined":
Код: javascript
1.
2.
3.
4.
5.
<script type="text/javascript">
$(function()
{
 $("#txtDepart").autocomplete({ source: "ref_depart.php?enter="+encodeURIComponent(window.strEnter), autoFocus: true, delay: 10 });
}); </script>
...
Рейтинг: 0 / 0
19.01.2014, 12:49
    #38530939
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему value из текстового поля возвращает undefined?
Алексей Смирнов, при таком вызов функции autocomplete делается всего один раз после загрузки документа.

Зачем тебе нужно менять источник данных для autocomplete?
...
Рейтинг: 0 / 0
19.01.2014, 13:13
    #38530952
Алексей Смирнов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему value из текстового поля возвращает undefined?
bazile,

Приведенная выше функция $(function()... вызывается при каждом нажатии на кнопку. Это обеспечивает библиотека JQuery-UI.

Зачем это нужно:

Два поля input на странице "txtEnter" (организация) и "txtDepart" (подразделения).
В первом поле выбираем организацию.
Во втором поле выбираем подразделения этой организации. В момент нажатии в поле txtDepart на кнопку клавиатуры происходит событие, которое вызывает функцию $function()... приведенную выше. Эта функция обеспечивает автозаполнение поля txtDepart, выдавая список возможных вариантов, которые читает из базы данных, путем обращения к файлу ref_depart.php, передавая в параметре GET как раз содержимое поля txtEnter (название организации) - вернее должно передавать, но никак не могу внутри функции получить значение поля txtEnter, т.к.:
1) значение поля document.getElementById("txtEnter").Value внутри функции почему-то всегда равно начальному значению value, заданному в теге input;
2) при попытке использовать глобальную переменную window.strEnter внутри функции эта переменная не видна(

Может быть ещё есть какие-то способы передачи значения поля txtEnter внутрь функции?
...
Рейтинг: 0 / 0
19.01.2014, 13:23
    #38530956
ILLHEAD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему value из текстового поля возвращает undefined?
Алексей Смирнов,

вы хотите по энтер выдать результат поиска вместо обновления автокомплита?
добавьте в инпут поисковой строки: onkeypress="fKeyEnter(event)"
Код: javascript
1.
2.
3.
4.
5.
6.
7.
// проверка нажатия ENTER
function fKeyEnter(e){
var keynum;
if(window.event){keynum=e.keyCode;}else if(e.which){keynum=e.which;}
if(keynum==13){
	... // отправка запроса на поиск
}}	


я так делал тут _http://bartersib.ru/
...
Рейтинг: 0 / 0
19.01.2014, 13:42
    #38530966
Алексей Смирнов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему value из текстового поля возвращает undefined?
ILLHEAD,

Нет, по Enter не хотел делать.... попытаюсь объяснить...

У меня условие для выдачи списка автозаполнения поля txtDepart зависит от 2-х полей txtEnter (название организации, введенное ранее) и txtDepart (начальные буквы, которые пользователь вводит в поле txtDepart). Другими словами в запросе к базе данных MySQL учавствуют два критерия:

Код: sql
1.
2.
$strSQL = "SELECT `department`.`Name` FROM `department` INNER JOIN `enters` ON `department`.`EnterID`=`enters`.`ID`
WHERE (`enters`.`Name`='".$strEnter."') AND (`department`.`Name` Like '%".$strDepart."%')";



Этот запрос выполняет файл ref_depart.php и возвращает уже полученные данные в функцию autocomplete, которая и вызывает этот файл на выполнение. Параметры $strEnter и $strDepart передаются в ref_depart.php через GET.

Вот полный листинг HTML:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<meta http-equiv="Content-Language" content="ru">

<script src="../_include/jquery.js"></script>
<script src="../_include/jquery-ui.js"></script>
<link rel="stylesheet" href="../_include/jquery-ui.css">

<script type="text/javascript">
$(function()
	{
	$("#txtEnter").autocomplete({ source: "ref_enters.php", autoFocus: true, delay: 10 });
	$("#txtDepart").autocomplete({ source: "ref_depart.php?enter="+encodeURIComponent(document.getElementById("txtEnter").Value),
autoFocus: true, delay: 10 });
	});
</script>

</head>

<body>

<FORM action="save.php" method="POST" name="frmMain">
<br>Организация:
<input type="text" id="txtEnter" name="txtEnter" maxlength="50" autofocus value="" size="50">
<br>подразделение:
<input type="text" id="txtDepart" name="txtDepart" maxlength="50" autofocus value="" size="50"">
</FORM>

</body>
</html>



Вот полный листинг reg_depart.php:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
<?php

// подключение к базе данных
//mysql_connect_database();

// определение строки подразделения
$strDepart = iconv("utf-8","cp1251",$_REQUEST['term']);

// чтение организации
$strEnter = iconv("utf-8","cp1251",$_REQUEST['enter']);

// формирование строки запроса
$strSQL = "SELECT `department`.`Name` FROM `department` INNER JOIN `enters` ON `department`.`EnterID`=`enters`.`ID`
WHERE (`enters`.`Short`='".$strEnter."') AND (`department`.`Name` Like '%".$strDepart."%') ORDER BY `department`.`Name`;";

// обращение к базе данных
$result = mysql_query($strSQL);

// создание массива результата
$varNames = array();

// чтение данных
while ($row = mysql_fetch_array($result)) $varNames[] = iconv("cp1251","utf-8",$row['Name']);

// вывод данных
echo json_encode($varNames);

?>
...
Рейтинг: 0 / 0
19.01.2014, 13:55
    #38530972
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему value из текстового поля возвращает undefined?
Алексей СмирновПриведенная выше функция $(function()... вызывается при каждом нажатии на кнопку.
Ты заблуждаешься. Эта функция вызывается только один раз после загрузки документа. В этой функции ты настраиваешь параметры autocomplete не более того.

Чтобы решить твою задачу с зависимыми autocomplete следует поступить примерно так:
Код: javascript
1.
2.
3.
4.
5.
$(function() {
    $("#txtEnter").on("change", function() {
        $("#txtDepart" ).autocomplete("option", "source", "ref_depart.php?enter="+encodeURIComponent($(this).val()) );
    });
});
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Почему value из текстового поля возвращает undefined? / 25 сообщений из 28, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]