2014-06-09 2 views
2

Мне нужно добавить элемент ввода в форму, чей идентификатор я не знаю. Приведенный ниже код работает замечательно, если есть только одна форма на страницеНайти форму без идентификатора и добавить элемент ввода к этому

var dd = document.createElement("div"); 
dd.id = "cont"; 
dd.name = "cont"; 
var pp = document.createElement("input"); 
pp.type = "password"; 
pp.name = "pass"; 
dd.appendChild(pp); 

document.getElementsByTagName('form')[0].appendChild(dd); 

но при наличии более чем 1 форма на странице, то этот элемент ввода получить приложенном к первой форме с вышеприведенным кодом. Помните, что я не знаю, сколько форм существует на странице html. и пользователь может разместить сценарий в любой форме на странице. так как я могу убедиться, что элемент ввода добавляется в нужную форму. некоторые предложили функцию jquery closeest(), но я предпочитаю чистый javascript.
Один рабочий пример - google recaptcha. там recaptcha вызов текстовое поле появляется точно, где u ставит скрипт и точно в форме, которую вы хотите.

так что ребята, любая помощь в чистом javascript-коде будет очень оценена.

.. спасибо

+2

Как мы можем узнать, какая форма права? – nicael

+0

Показать HTML и как узнать, в какой форме добавить элемент (с человеческой точки зрения). – Justinas

+0

Почему бы не использовать атрибут '' name'' для тега формы? – Arvind

ответ

1

Если вы хотите вставить input тег в ту же форму, в котором вы разместили тег сценария. Вы можете обратиться к конкретной форме, как это

var form = document.currentScript.parentNode; 
form.appendChild(dd); 
+0

Это не так широко поддерживается среди браузеров. –

+0

этот код работает gr8 на firefox и Chrome, но не удалось в IE .. В любом случае я собираюсь придерживаться этого .. – user3721229

0

Добавить Class в form, и в яваскрипте Фета формы по имени класса

document.getElementsByClassName('classname')[0].appendChild(dd);

+0

'getElementsByClassName()'. И это более или менее то же самое, что доступ к элементам по имени тега. Перечитайте вопрос. Первое предложение после кода. – nicael

+0

Извините, я пропустил это Спасибо nicael. –

Смежные вопросы