Ru-MaNGOS

Вернуться   Ru-MaNGOS > Документация > Языки программирования

Важная информация

Языки программирования Изучаем С++, Sql, php, Lua, Python

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.05.2011, 15:44   #1
Nordway
RMDC Donator
 
Регистрация: 07.03.2010
Адрес: Россия
Сообщений: 29
Сказал(а) спасибо: 16
Поблагодарили 18 раз(а) в 3 сообщениях
Nordway На верном пути
По умолчанию [JQuery] append или html вывод данных в <input>

Может быть тут есть знатоки JQuery\Ajax кто сможет помочь.
Делаю не сложную задачу по подгрузке данных из БД (например, пользователь вводит email и получает имя пользователя)

Формирую скрипт для отправки пользователю вот таким способом:
Код:
$js = 'var db = $("#name");';
$js .= 'db.html("'.$query['text'].'");';
Его обрабатывает вот такая JS функция
Код:
function Send() {
    $.post("ajax.php",
    {
        act: "send",
        email: $("#email").val()
    },
    function (result) {
        eval(result);
    });

    $("#name").focus();
    return false;
}
Функция рабочая. Проблема заключается в том, что в
Код HTML:
<div id='name'></div>
информация передаётся, а в
Код HTML:
<input type='text' id='name' value=''>
не передаётся

Подскажите в чём косяк =\
Nordway вне форума   Ответить с цитированием
Старый 15.05.2011, 15:52   #2
virusav
Администратор
 
Аватар для virusav
 
Регистрация: 19.02.2010
Сообщений: 492
Сказал(а) спасибо: 55
Поблагодарили 341 раз(а) в 154 сообщениях
virusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человек
Отправить сообщение для virusav с помощью ICQ
По умолчанию

Как я понимаю, приходит result, который содержит код JS.
В нем может быть прописано проставление значения в innerHTML, а у INPUT должно быть value.
virusav вне форума   Ответить с цитированием
Старый 15.05.2011, 16:25   #3
Nordway
RMDC Donator
 
Регистрация: 07.03.2010
Адрес: Россия
Сообщений: 29
Сказал(а) спасибо: 16
Поблагодарили 18 раз(а) в 3 сообщениях
Nordway На верном пути
По умолчанию

Вот как раз дело в том что, не всегда почему то отсылает данные. Сейчас вот ещё покапался и пришёл к таким результатам:

Использование append(); - работает только с <DIV>, причём не делает очистку при повторном выполнении.
Код:
$js .= 'db.append("'.$query['text'].'");';

Использование html(); - работает только с <DIV>
Код:
$js .= 'db.html("'.$query['text'].'");';
Использование val(); - работает только с <INPUT>
Код:
$js .= 'db.val("'.$query['text'].'");';
Использование attr(); - работает только с <INPUT>
Код:
$js .= 'db.attr("value", "'.$query['text'].'");';
Nordway вне форума   Ответить с цитированием
Старый 15.05.2011, 16:57   #4
virusav
Администратор
 
Аватар для virusav
 
Регистрация: 19.02.2010
Сообщений: 492
Сказал(а) спасибо: 55
Поблагодарили 341 раз(а) в 154 сообщениях
virusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человек
Отправить сообщение для virusav с помощью ICQ
По умолчанию

DIV - блочный элемент, может содержать вложенные элементы.
INPUT - неблочный элемент, не может содержать внутри другие элементы.

append() - работает с блочными элементами.
html() - для элементов, у которых есть атрибут innerHTML.
val() - для элементов, у которых есть атрибут value.

attr() - должен работать со всеми элементами, у которых есть атрибуты.
virusav вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Nordway (15.05.2011)
Старый 15.05.2011, 18:11   #5
tempura
Forum bot
 
Аватар для tempura
 
Регистрация: 01.02.2010
Адрес: пусто
Сообщений: 841
Сказал(а) спасибо: 286
Поблагодарили 418 раз(а) в 190 сообщениях
Записей в дневнике: 60
tempura отключил(а) отображение уровня репутации
По умолчанию

А если попробовать не input, а textarea (блочный?) сделав его высотой в одну строку, и ограничив по кол-ву символов?
__________________
Совершенно безопасен для людей, обладающих хотя бы некоторыми минимальными зачатками интеллекта, и способными строить причинно-следственные цепочки.
tempura вне форума   Ответить с цитированием
Старый 15.05.2011, 18:52   #6
virusav
Администратор
 
Аватар для virusav
 
Регистрация: 19.02.2010
Сообщений: 492
Сказал(а) спасибо: 55
Поблагодарили 341 раз(а) в 154 сообщениях
virusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человек
Отправить сообщение для virusav с помощью ICQ
По умолчанию

У TEXTAREA тоже только value.
virusav вне форума   Ответить с цитированием
Старый 16.05.2011, 09:02   #7
tempura
Forum bot
 
Аватар для tempura
 
Регистрация: 01.02.2010
Адрес: пусто
Сообщений: 841
Сказал(а) спасибо: 286
Поблагодарили 418 раз(а) в 190 сообщениях
Записей в дневнике: 60
tempura отключил(а) отображение уровня репутации
По умолчанию

Между тегами <textarea> и </textarea> можно поместить любой текст, который будет отображаться внутри поля, а value там как раз нет.
Цитата:
Атрибуты
accesskey - Переход к полю с помощью сочетания клавиш.
cols - Ширина поля в символах.
disabled - Блокирует доступ и изменение элемента.
name - Имя поля, предназначено для того, чтобы обработчик формы мог его идентифицировать.
readonly - Устанавливает, что поле не может изменяться пользователем.
rows - Высота поля в строках текста.
tabindex - Порядок перехода между элементами при нажатии на клавишу Tab.
wrap - Параметры переноса строк.
Также для этого тега доступны универсальные атрибуты и события.
Или это не о том?
__________________
Совершенно безопасен для людей, обладающих хотя бы некоторыми минимальными зачатками интеллекта, и способными строить причинно-следственные цепочки.
tempura вне форума   Ответить с цитированием
Старый 16.05.2011, 09:40   #8
Minimajack
Гость
 
Сообщений: n/a
По умолчанию

Цитата:
Сообщение от tempura Посмотреть сообщение
у всех элементов форм атрибут value есть, оно то и передается в формах...
не надо голову ломать, выставлять и value и innerHTML значение и забыть
  Ответить с цитированием
Старый 16.05.2011, 11:35   #9
virusav
Администратор
 
Аватар для virusav
 
Регистрация: 19.02.2010
Сообщений: 492
Сказал(а) спасибо: 55
Поблагодарили 341 раз(а) в 154 сообщениях
virusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человек
Отправить сообщение для virusav с помощью ICQ
По умолчанию

У TEXTAREA значение пишется в value, хотя можно обратиться и через innerHTML.

Для сравнения: в Сафари 5 value возвращает текст без учета энтеров в начале, а innerHTML возвращает с энтером.
virusav вне форума   Ответить с цитированием
Старый 16.05.2011, 20:10   #10
tempura
Forum bot
 
Аватар для tempura
 
Регистрация: 01.02.2010
Адрес: пусто
Сообщений: 841
Сказал(а) спасибо: 286
Поблагодарили 418 раз(а) в 190 сообщениях
Записей в дневнике: 60
tempura отключил(а) отображение уровня репутации
По умолчанию

Цитата:
Сообщение от virusav Посмотреть сообщение
У TEXTAREA значение пишется в value, хотя можно обратиться и через innerHTML.
У textarea значение пишется между <textarea> и </textarea>, а никак не в value. Если открыть любую страницу форума на просмотр кода, и кинуть там поиском по "textarea" - там (например):
Код:
<TEXTAREA style="WIDTH: 540px; DISPLAY: block; HEIGHT: 250px; oWidth: 540px" dir=ltr id=vB_Editor_001_textarea tabIndex=1 rows=10 cols=60 name=message editorid="vB_Editor_001">
У textarea значение пишется между <textarea> и </textarea>, а никак не в value.
</TEXTAREA>
__________________
Совершенно безопасен для людей, обладающих хотя бы некоторыми минимальными зачатками интеллекта, и способными строить причинно-следственные цепочки.
tempura вне форума   Ответить с цитированием
Старый 16.05.2011, 21:55   #11
virusav
Администратор
 
Аватар для virusav
 
Регистрация: 19.02.2010
Сообщений: 492
Сказал(а) спасибо: 55
Поблагодарили 341 раз(а) в 154 сообщениях
virusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человек
Отправить сообщение для virusav с помощью ICQ
По умолчанию

Если значение пишется между тегами, то это не означает, что value у TEXTAREA нет.
virusav вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
KiriX (17.05.2011)
Старый 16.05.2011, 22:08   #12
Nordway
RMDC Donator
 
Регистрация: 07.03.2010
Адрес: Россия
Сообщений: 29
Сказал(а) спасибо: 16
Поблагодарили 18 раз(а) в 3 сообщениях
Nordway На верном пути
По умолчанию

Как вариант для <textarea> можно использовать .text()
Проверить достовреность информации в данный момнет нет возможности, но где-то об этом слышал
Nordway вне форума   Ответить с цитированием
Старый 17.05.2011, 09:18   #13
tempura
Forum bot
 
Аватар для tempura
 
Регистрация: 01.02.2010
Адрес: пусто
Сообщений: 841
Сказал(а) спасибо: 286
Поблагодарили 418 раз(а) в 190 сообщениях
Записей в дневнике: 60
tempura отключил(а) отображение уровня репутации
По умолчанию

Так нам же, по идее, надо append() загонять внутрь какого-то поля? В смысле - я вообще потерял конечную цель... Что на входе есть, и чего в итоге получить надо?

Судя по первому посту:
Цитата:
в
PHP код:
<div id='name'></div
информация передаётся, а в
PHP код:
<input type='text' id='name' value=''
не передается
Я и думал, что ежели вывод сделать в
PHP код:
<textarea id='name'></textarea
и стилями ему придать внешний вид как у input, то все будет нормально.
__________________
Совершенно безопасен для людей, обладающих хотя бы некоторыми минимальными зачатками интеллекта, и способными строить причинно-следственные цепочки.
tempura вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Старый 17.05.2011, 10:06   #14
Minimajack
Гость
 
Сообщений: n/a
По умолчанию

Цитата:
Сообщение от tempura Посмотреть сообщение
В смысле - я вообще потерял конечную цель... Что на входе есть, и чего в итоге получить надо?
вот главный вопрос...Что хотим?
input -> Ajax -> input -> submit ( ввод мыла, запрос на поиск пользователя по мылу, вывод данных в форму для отправки на сервер )
input -> Ajax -> input(div) ( ввод мыла, запрос на поиск пользователя по мылу, вывод данных в форму или блок для отображения пользователю)

что ожидаем от процесса?
  Ответить с цитированием
Старый 17.05.2011, 11:33   #15
virusav
Администратор
 
Аватар для virusav
 
Регистрация: 19.02.2010
Сообщений: 492
Сказал(а) спасибо: 55
Поблагодарили 341 раз(а) в 154 сообщениях
virusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человек
Отправить сообщение для virusav с помощью ICQ
По умолчанию

Не осилил описания.
Скрин формы есть?
virusav вне форума   Ответить с цитированием
Старый 17.05.2011, 21:33   #16
Nordway
RMDC Donator
 
Регистрация: 07.03.2010
Адрес: Россия
Сообщений: 29
Сказал(а) спасибо: 16
Поблагодарили 18 раз(а) в 3 сообщениях
Nordway На верном пути
По умолчанию

Задача была такой: пользователь вводит в поле_1 свой\чей-то email. После нажатия кнопки в поле_2 появляется имя хозяина этого почтового адреса. Если в БД нет такого адреса - выводится соотв. сообщение.

Вид формы в приложении.

Сошлись на том, что .append() для вывода информации в поле_2 не пригоден (т.к. тип поля input), и желательно использовать метод .val() или .attr()

Миниатюры
Нажмите на изображение для увеличения
Название: Безымянный.JPG
Просмотров: 593
Размер:	3.7 Кб
ID:	977  
Nordway вне форума   Ответить с цитированием
Старый 17.05.2011, 22:51   #17
Minimajack
Гость
 
Сообщений: n/a
По умолчанию

Nordway, имхо, использовать input - "не красиво"...его и править можно( со стилем disabled уже не то ), и само по себе поле выглядит лишним...а если у человека отключен javascript?
может просто: alert('Имя пользователя: '+name) или переход на страницу с именем( при отключенном js ) ?
  Ответить с цитированием
Старый 17.05.2011, 23:20   #18
alien
Ученый
 
Регистрация: 17.05.2010
Сообщений: 148
Сказал(а) спасибо: 18
Поблагодарили 25 раз(а) в 22 сообщениях
alien На верном пути
По умолчанию

Код:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
	<head>
	<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
	</head>
	<body>
	<form onSubmit="return Send()">
	<input type="text" id="email" >
	<input type="submit">
	<input type="text" readonly="readonly" id="name" >
	</form>
	<script>
	function Send() {
    $.post("ajax.php",
    {
        act: "send",
        email: $("#email").val()
    },
    function (result) {
        $("#name").val(result);
    });

    $("#name").focus();
    return false;
}
	</script>
	</body>
	</html>
ajax.php:
Код:
<?
if($_POST['email']==="test@mail.ru") echo "Good mail"; else echo "Bad mail";

?>
alien вне форума   Ответить с цитированием
Старый 18.05.2011, 10:09   #19
tempura
Forum bot
 
Аватар для tempura
 
Регистрация: 01.02.2010
Адрес: пусто
Сообщений: 841
Сказал(а) спасибо: 286
Поблагодарили 418 раз(а) в 190 сообщениях
Записей в дневнике: 60
tempura отключил(а) отображение уровня репутации
Смех

Цитата:
Сообщение от alien Посмотреть сообщение
. . .
Круто промазал...
__________________
Совершенно безопасен для людей, обладающих хотя бы некоторыми минимальными зачатками интеллекта, и способными строить причинно-следственные цепочки.
tempura вне форума   Ответить с цитированием
Старый 19.05.2011, 09:17   #20
Nordway
RMDC Donator
 
Регистрация: 07.03.2010
Адрес: Россия
Сообщений: 29
Сказал(а) спасибо: 16
Поблагодарили 18 раз(а) в 3 сообщениях
Nordway На верном пути
По умолчанию

Minimajack, согласен. Для случаев когда редактировать ничего не нужно его использовать плохо. Но дело в том, что форму нужно дальше отправлять. И по E-mail из БД вспоминается не только имя пользователя, но и его контактные данные и другая информация, которую пользователь возможно захочет изменить. Поэтому и использую input
Nordway вне форума   Ответить с цитированием
Старый 22.09.2011, 10:29   #21
SergiK_KilleR
Пользователь
 
Аватар для SergiK_KilleR
 
Регистрация: 07.03.2010
Сообщений: 46
Сказал(а) спасибо: 15
Поблагодарили 53 раз(а) в 14 сообщениях
SergiK_KilleR Скоро придёт к известности
По умолчанию

кстати, вспомнилась одна вещь - если надо получить много данных аяксом и заполнить ими форму (для редактирования или отпрвки куда либо). Я использовал JsHttpRequest (http://dklab.ru/lib/JsHttpRequest/) - формируем массив данных на сервере (backend) и обрабатываем результат как массив/хеш уже на стороне клиента (frontend).

Совместимость в jQuery не проверял, а вот с Prototype работает нормально
SergiK_KilleR вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
редактируем базы данных - Dbscript dj--alex Tools 14 03.04.2017 10:17
Ванильные DBC из 3.3.5a в виде html + то, чем было сделано bogys Tools 0 20.01.2011 12:59
Вывод системного сообщения в игре Insider42 Новичкам 11 26.06.2010 13:25
[fix 0.12] вывод в таблицу character_stats Chipleo Принятые патчи 1 21.04.2010 12:13
[9550] Hide unsafe templated ByteBuffer::append function only for internal use. newsbot CMaNGOS Commits 0 08.03.2010 18:50


Текущее время: 22:27. Часовой пояс GMT +3.


ru-mangos.ru - Русское сообщество MaNGOS
Главная цель проекта MaNGOS - обучающая, поэтому разрешается использовать исходный код и собранную программу только для образовательных целей.
Вы не можете использовать MaNGOS в коммерческих целях, а также не разрешается устанавливать публичные серверы на базе MaNGOS.
Любое копирование материалов, информации в любом виде без указания источника - форума Ru-MaNGOS будет считаться нарушением авторских прав и нарушением Уголовного Кодекса РФ, ст. 146 ст. 147.
Перевод vBulletin: zCarot