2016-03-29 5 views
0

Ich habe ein Formular mit Texteingabe und Schaltfläche.Warum funktioniert diese JavasScript-Validierung nicht in Firefox

Es gibt ein bisschen JavaScript, um zu überprüfen, ob der Benutzername null ist oder nicht. Wenn es null ist, wird eine Validierungsnachricht angezeigt, andernfalls wird das Formular gesendet.

Problem ist der onclick selbst feuert nicht in Firefox. Es funktioniert in jedem anderen Browser.

Kann jemand bitte darauf hinweisen, wo ich falsch liege? Danke vielmals.

HTML: <form name="myForm" action="TestController"> <input type="text" width="50" name="username" /> <button onclick="submitForm()">Go</button> <span class="errSpan"></span> </form>

JavaScript:

(function(NAMESPACE){ 

NAMESPACE.submitForm = function(){ 
    console.log('invoked'); 
    window.event.preventDefault(); 
    console.log(window.myForm.username.value); 

    if(window.myForm.username.value === "") 
    document.getElementsByClassName('errSpan')[0].innerHTML = 'cannot be null'; 
    else { 
    document.myForm.submit(); 
    } 
} 
})(window); 

Here is link to JsFiddle

Antwort

0

In firefox window.event ist nicht definiert, und der Code nicht mit dem Fehler.

Verwenden Sie addEventListener, um das Submit-Ereignis für das Formular hinzuzufügen, und entfernen Sie die onclick-Anweisung von der Schaltfläche.

window.myForm.addEventListener('submit', function (e) { 
    e.preventDefault(); 
    //any code what you want 
}); 
0

Zuerst sollten Sie das Ereignis an die submitForm() Methode übergeben.

onclick="submitForm(event)" 

dann dieses Ereignis Argument preventDefault

NAMESPACE.submitForm = function(e){ 
    console.log('invoked'); 
    e.preventDefault(); 
    console.log(window.myForm.username.value); 
    ... 
} 

zu nennen Oder verwenden onsubmit Methode, um Ihre anrufen Funktion einreichen und Ereignis stoppen propogration heißt das Formular absenden.