Как я могу получить входное значение с помощью прототипа?

У меня есть следующий ввод без какой-либо формы:

<input type="text" value="myValue" name="td_website static" class="td_inner_input">

Как я могу получить значение ввода с помощью прототипа? Я пробовал использовать alert($('tb_website static').value);, но не работает.


person 3logy    schedule 08.03.2011    source источник


Ответы (4)


Вам необходимо использовать функцию $$, которая возвращает массив. Есть несколько способов использовать результат enumerable.

Если вы знаете, что будет только один соответствующий элемент, используйте это:

$$('[name="tb_website static"]').first().value

Если имеется более одного ввода (что является допустимым HTML), то это получает массив значений:

$$('[name="tb_website static"]').map(Form.Element.getValue)

(При сопоставлении с помощью Form.Element.getValue - с псевдонимом _ 5_ - лучше обрабатывает различия браузеров и не input элементы, которые не хранят свое значение в атрибуте value)

person clockworkgeek    schedule 08.03.2011

Я почти уверен, что $('tb_website static') будет искать элемент с этим идентификатором, а не с этим именем.

Еще раз взгляните на документацию по PrototypeJS.

person Lazarus    schedule 08.03.2011
comment
Спасибо! а как здесь использовать getbyname? - person 3logy; 08.03.2011
comment
Понятия не имею, сработает ли это $$('[name="tb_website static"]'), но, возможно, это ваш лучший вариант. - person Lazarus; 08.03.2011

Это потому, что функция $() является псевдонимом для getElementById(). Это означает, что вам нужно указать и идентификатор в вашем вводе :)

<input type="text" value="myValue" id="td_website static" name="td_website static" class="td_inner_input">
person tsadiq    schedule 08.03.2011
comment
но теперь, когда я использую свой brin, я думаю, что есть другой псевдоним, все еще основанный на идентификаторе, но он возвращает значение напрямую, $ F () или $ A (), но я не могу найти его в google :) - person tsadiq; 08.03.2011
comment
Я не могу / не должен писать ID в этот вход !! так что я должен попробовать это с getByName !! возможно?? - person 3logy; 08.03.2011

person    schedule
comment
я стал ошибкой: codealert ($ ('input [name = td_website static]'). value); равно нулю code - person 3logy; 08.03.2011
comment
@code: я не заметил, что в имени есть пробел (вам нужно использовать двойные кавычки, чтобы экранировать имена пробелами). Имейте в виду, что селектор возвращает массив, а не отдельный элемент. - person Jaroslav Jandek; 08.03.2011