Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Создание и добавление checkbox в форму (https://javascript.ru/forum/misc/7869-sozdanie-i-dobavlenie-checkbox-v-formu.html)

Анжелика 23.02.2010 12:31

Создание и добавление checkbox в форму
 
Добрый день.
Пытаюсь создать новый input и вставить его в определенное место в форме. Однако он не отображаеться на форме.
function myFunction() {
	var myCheck = document.getElementById('1');

	var myCheckNew = document.createElement('input');
	myCheckNew.type = "checkbox";
	myCheckNew.name = "computer";

	var myText = document.createTextNode('Sport3');
	myCheckNew.appendChild(myText);
	
	document.MyForm.insertBefore(myCheckNew, myCheck);

<form name = 'MyForm'>
 <input type="checkbox" name="computer" id=1>Спорт2
 <input type="checkbox" name="computer" id=2> Спорт3
 <input id=myinput2 type="submit" value="создать" onClick="myFunction()">
 </form>

Подскажите, пожалуйста, в чем я ошибаюсь.

vk65535 23.02.2010 14:00

У чекбоксов не может быть детей, поэтому если хотите добавить рядом подпись, то добавляйте ее рядом, а лучше всего поместить и подпись, и чекбокс внутрь label.
function crCheckBox(name, title) {
	var ie = !!document.releaseCapture;
	var c = document.createElement(ie ? ['<input name="', name, '" />'].join('') : 'input');
	// IE: The NAME attribute cannot be set at run time on elements dynamically created with the createElement method.
	if (!ie) c.name = name;
	c.type = 'checkbox';
	var l = document.createElement('label');
	l.appendChild(c);
	l.appendChild(document.createTextNode(title));
	return l;
}
function myFunction() {
	var bf = document.getElementById('1');
	bf.parentNode.insertBefore(crCheckBox('computer', 'Sport3'), bf);
}

Анжелика 23.02.2010 14:24

Да, Ваш метод добавляет подпись рядом. Однако чекбокс мелькает и тут же пропадает.

vk65535 23.02.2010 16:38

Видимо, у вас дальше там что-то происходит, что его убирает. Вероятно, сабмит формы, после чего загружается снова форма без чекбокса.

Анжелика 23.02.2010 16:49

О-о-о. Семен-семенович. Точно. Спасибо за помощь. Все отлично работает.


Часовой пояс GMT +3, время: 17:46.