jQuery: Attribut geht im IE nicht (onsubmit)

Hi.

Ich habe ein Formular

Diesem form möchte ich ein Attribut „onsubmit“ mit dem Wert „return checkForm();“ hinzufügen (hier 3 Alternativen, die alle getestet habe, mit gleichem Effekt):

$("#aForm").attr("onsubmit", "return checkForm();"); 
$("form[name='aForm']").attr("onsubmit", "return checkForm();");
$("form").attr("onsubmit", "return checkForm();"); 

Im FF geht alles ohne Probleme:

aber der IE weigert sich strikt, dieses Attribut einzufügen!!
Wenn ich testweise ein anderes Attribut als „onsubmit“ nehme – z.B. „phantasie“ – nimmt der IE diese Änderung ohne Probleme:

$("form").attr("phantasie", "return checkForm();");

Sogar ein onsubmit mit anderem Wert geht (!):

$("form").attr("onsubmit", "blabla");

Frage:
Warum verweigert der IE eine Zuweisung, wie ich sie haben möchte?
Ich bin verzweifelt und beiße gleich in die Tastatur…

Markus

Hallo Markus,

der IE hat bei einigen Attributen ein paar Eigenheiten die zu dem von dir geschilderten Effekt fuehren koennen.
In deinem Fall wuerde ich dir zu einem Event fuer das Formular raten. Das ist diesem Fall auch die elegantere Methode als das onsubmit-Attribut zu nutzen.

Beispiele findest du unter http://api.jquery.com/submit/

Allgemein wuerde ich von onirgendwas-Attributen(onclick, onsubmit, …) abraten und diese nur noch in Sonderfaellen nutzen und stattdessen auf Javascript-Events setzen.

Gruss
Stefan

hi markuss,

onsubmit gibt default true zurück.
wenn der event onsubmit eintritt und die function checkForm() false zurückgibt, dann reicht das.
also nicht „return checkForm()“, sondern „ckeckForm()“

h♥rzlichen Gruß
Nitya

Hallo,

jQuery macht es dir sehr einfach deine Events zu verwalten. In deinem Fall musst du einfach schreiben:

$(’#aForm’)submit(function ( event)
{
alert(‚Form wird abgeschickt!‘);
//mit dieser Zeile kannst du den submit abbrechten
//event.preventDefault();
});

Gruß,
Rasta

Kleiner Schreibfehler:

$(’#aForm’).submit(function ( event)
{
alert(‚Form wird abgeschickt!‘);

//Hier noch ein paar Beispiele wie du auf die Form zugreifen kannst
// this ist das DOM-Element form. $(this) macht es zu einem jQuery-Context Objekt
var form = $(this);
//liefert alle input-Felder vom Typ ‚text‘
var inputs = $(‚input[type=text]‘, form);
//liefert alle input-Felder vom Typ ‚checkbox‘
var checked = $(‚input[type=checkbox]‘, form);
checked.each(function(index, item)
{
//ist das akutelle item angehakt?
if($(item).is(’:checked’))
alert(‚Ist angehakt!‘);
});
//mit dieser Zeile kannst du den submit abbrechten
//event.preventDefault();
});

Gruß,
Rasta