Łukasz Franczak

Łukasz Franczak EAI/ESB Developer
(Tibco / Mule / JEE)

Temat: [JavaScript] Dynamiczne dodawanie pól radio w IE7

Witam, napisałem dwie funkcje do dynamicznego dodawania pól formularza. Formularz zawiera pola typu radio lecz w IE7 nie da się zaznaczyć żadnego z nich. Kombinowałem że może mieć to znaczenie z obsługą onClick w obiektach tworzonych dynamicznie lecz do niczego odkrywczego nie doszedłem. Jeśli ktoś będzie wiedział co z tym robić to proszę o pomoc, bo na IE7 to musi działać.

 
<div id="pola" style="width:100%; float:left; text-align:center; position:relative;"> </div>
<script type="text/javascript">
<!-- <![CDATA[ var i = 0; function usungalaz(n) {
if ( n.hasChildNodes() ) {
usungalaz(n.lastChild);
n.removeChild(n.lastChild);
}
i--;
}

function wstaw() {
var input = document.createElement('select');
input.setAttribute('name', 'jezyki[]');
input.setAttribute('id','jezyki');

var input2 = document.createElement('select');
input2.setAttribute('name','jezyki2[]');
input2.setAttribute('id','jezyki2');
var nat = document.createElement('input');
nat.setAttribute('name','native'+i);
nat.setAttribute('type','radio');
nat.setAttribute('value','1');
nat.checked = false;

var nat2 = document.createElement('input');
nat2.setAttribute('name','native'+i);
nat2.setAttribute('value','0');
nat2.setAttribute('type','radio');
nat2.checked = true;

var prz = document.createElement('input');
prz.setAttribute('name','przysiegly'+i);
prz.setAttribute('type','radio');
prz.setAttribute('value','1');
prz.checked = false;
prz.disabled = false;

var prz2 = document.createElement('input');
prz2.setAttribute('name','przysiegly'+i);
prz2.setAttribute('value','0');
prz2.setAttribute('type','radio');
prz2.checked = true;

var br2 = document.createElement('br');
var br = document.createElement('br');
var div = document.createElement('div');

div.setAttribute('id',i);
div.appendChild(input);
div.appendChild(input2);
div.appendChild(br);
div.appendChild(document.createTextNode('\n\n\nNative Speaker: '));
div.appendChild(nat);
div.appendChild(document.createTextNode('Tak'));
div.appendChild(nat2);
div.appendChild(document.createTextNode(' Nie '));
div.appendChild(br2);
div.appendChild(document.createTextNode('Tłumacz przysięgły:'));
div.appendChild(prz);
div.appendChild(document.createTextNode(' Tak '));
div.appendChild(prz2);
div.appendChild(document.createTextNode(' Nie '));

document.getElementById('pola').appendChild(div);
i++;
}
// ]]> --> </script>

<div style="position:relative; width:100%; height:50px; float:left; text-align:center;">
<p style="text-align:center;" >
<a href="#here" onclick="wstaw()">Dodaj</a>
<a href="#here" onclick="usungalaz(document.getElementById('pola'));">Usun</a>
<br/><br/>
</p> </div>
Łukasz Franczak edytował(a) ten post dnia 30.03.11 o godzinie 12:28
Robert P.

Robert P. Senior PHP Developer

Temat: [JavaScript] Dynamiczne dodawanie pól radio w IE7


<script type="text/javascript">
$(function (){
$("#wstaw").click(function (){
$("#wstawiane").append('<input type="text" value="aa" name="cos"/>');
});
});
</script>
<a href="#here" id="wstaw">Dodaj</a>
<div id="wstawiane"></div>


przy założeniu że masz jquery i trochę mniej kodu jak chcesz tworzyć inputy bezpośrednio z javascript zto też dużego problemu nie ma. Można również np tablice ustawić z atrybutami, które dotyczą inputa i potem w for je tworzyć zamiast powtarzać kod.
Łukasz Franczak

Łukasz Franczak EAI/ESB Developer
(Tibco / Mule / JEE)

Temat: [JavaScript] Dynamiczne dodawanie pól radio w IE7

Dzięki za kod.
Jak to uruchomię to zrobię jakiś obiekt i będę te parametry w konstruktorze przesyłał, wtedy będzie to miało ręce i nogi. Póki co faza testów.

W sumie to już poradziłem sobie za pomocą łapania wyjątków ale pomysł z jQuery też jest dobry.


var nat = document.createElement('input');
try {
nat = document.createElement('<input name="native[' + i + ']" value="1" type="radio" />');
}
catch(err) {
nat.setAttribute('name','native['+i+']');
nat.setAttribute('value','0');
nat.setAttribute('type','radio');
nat.setAttribute('type','radio');
}

Następna dyskusja:

Dynamiczne dodawanie wiersz...




Wyślij zaproszenie do