Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Применение библиотек > Вытащить Value из input через jQuery


Автор: Innuendo108 1.10.2009, 00:02
в обычном яваскрипте код выглядит так:
Код

    var group = document.getElementById("gr").value;  // из input'a считали значение
    document.getElementById("headGroup").innerHTML = group;   // и вставили в Div


Как это сделать на jQuery?
если я делаю var group = $("#gr").value, то group принимает значение undefined.

Автор: unicross 1.10.2009, 00:07
Код

$("#headGroup").html($("#gr").val());


Автор: skyboy 1.10.2009, 09:47
Цитата(Innuendo108 @  30.9.2009,  23:02 Найти цитируемый пост)
то group принимает значение undefined. 

а все потому, что выполнение jQuery('<выражение>') возвращает не один DOM-элемент, а коллекцию объектов типа jQuery.
чтоб получить доступ к DOM-свойствам, надо либо:
1. а. получить конкретный DOM-элемент при помощи get():
Код

$("#gr").get(0).value

б. пройтись функцией по всей коллекции:
Код

$("#gr").each(function() {... this.value ...});

2. искать в http://docs.jquery.com/ эквиваленты нужных тебе DOM-функций(вот, как привел пример unicross с метдом val(), который будет работать не только для input'ов, но и select'ов с textarea'ми).
второй вариант, конечно, получше будет: jQuery мощная платформа и использовать её только для поиска элемента - преступление.

Автор: brother79 2.10.2009, 10:04
Цитата(skyboy @  1.10.2009,  09:47 Найти цитируемый пост)

а все потому, что выполнение jQuery('<выражение>') возвращает не один DOM-элемент, а коллекцию объектов типа jQuery.
чтоб получить доступ к DOM-свойствам, надо либо:



Что-то я ничего не понял:

1) если по id должен выбраться только один объект, зачем делать 

Код

$("#gr").get(0)

или .each
2) смысл доставать по .get(0), если есть .attr ?

Добавлено через 6 минут и 1 секунду
Ну и использовать .each, чтобы у всех эл-тов усстановить значение - тоже не понятно, есть .val() который у всех сразу усстанавливает значения.

И вообще jquery придумали для того, чтобы сократить максимально размер, в связи с чем стандартные конструкции обращения к dom эл-там нужны крайне редко, когда есть куча возможностей сократить код посредством jquery, иначе смысл вообще в Jquery?

Автор: InfMag 2.10.2009, 14:42
Код

var group = document.getElementById("gr").value;  // из input'a считали значение
document.getElementById("headGroup").innerHTML = group;   // и вставили в Div


Код

$("#headGroup").html($("#gr").val());

Автор: skyboy 7.10.2009, 14:49
Цитата(brother79 @  2.10.2009,  09:04 Найти цитируемый пост)
если по id должен выбраться только один объект, зачем делать 

затем, что jQuery вернет не DOM элемент, а объект jQuery. и чтоб получить доступ к DOM-свойствам, надо вызывать get(). разве нет?
да, в случае с jquery-методами val() отлично скрывает работу с DOM-функциями. И я привел методы доступа к свойствам/методам DOM только затем, чтоб объяснить - jQuery('#gr') возвращает не HTMLNode, а jQuery-объект и если уж сильно хочется работать с DOM, надо делать дополнительные телодвижения.

Автор: Kuznec 30.9.2013, 16:15
Цитата(brother79 @  2.10.2009,  10:04 Найти цитируемый пост)
2) смысл доставать по .get(0), если есть .attr ?


Ага, использовал ранее attr. Видимо долго не программил на jQuery. Поднял ранее начавший проект, увидел, что вышли новые версии jQuery & UI. Подсоединил. Перестала функция attr('value') считывать текст, введённый с клавиатуры. Заменил jQuery & UI на старый - заработало. На последние - нет. Так и решил вставить get(0).value - теперь работает. Что за глюк такой... Вот так потом решишь обновить библиотеку, ещё что-нибудь отвалится.

Автор: InfMag 30.9.2013, 20:53
Цитата(Kuznec @ 30.9.2013,  19:15)
Цитата(brother79 @  2.10.2009,  10:04 Найти цитируемый пост)
2) смысл доставать по .get(0), если есть .attr ?


Ага, использовал ранее attr. Видимо долго не программил на jQuery. Поднял ранее начавший проект, увидел, что вышли новые версии jQuery & UI. Подсоединил. Перестала функция attr('value') считывать текст, введённый с клавиатуры. Заменил jQuery & UI на старый - заработало. На последние - нет. Так и решил вставить get(0).value - теперь работает. Что за глюк такой... Вот так потом решишь обновить библиотеку, ещё что-нибудь отвалится.

Некропостинг в тему 4-лётней давности однако)

А вообще может имеет смысл .val() использовать, а не .attr('value'), по-назначению так сказать?

Автор: Kuznec 4.10.2013, 12:40
Цитата(InfMag @  30.9.2013,  20:53 Найти цитируемый пост)
А вообще может имеет смысл .val() использовать, а не .attr('value'), по-назначению так сказать? 


Да, потом так и сделал.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)