2010-11-18 30 views
0

Bu beni gerçekten rahatsız ediyor. Sadece işlev false değerini döndürürse gönderilmemesini istiyorum. İşte senaryo.Javascript Form Doğrulama

<form onsumbit="checkPass();"> 
</form> 

ve ne zaman ı kullanıcı

<form> 
<input type="submit" onclick="checkPass();"> 
</form> 

ve hiçbir şanslar:

function checkPass(){ 
          var pass1 = document.getElementById('pass'); 
          var pass2 = document.getElementById('pass2'); 
          var message = document.getElementById('confirmMessage'); 
          var goodColor = "#224466"; 
          var badColor = "#900000"; 
          if(pass1.value == pass2.value){ 
          pass2.style.backgroundColor = goodColor; 


          return true; 
          }else{ 
          pass2.style.backgroundColor = badColor; 


          return false; 
          } 
         } 

formu hala i kullandığınızda sumbit. Herhangi bir fikir?

+0

Bu olay işleyicisini formunuza nasıl eklersiniz? – Gareth

+0

Sizin kodunuz biraz kafa karıştırıcı. Çalışmaya çalıştığınız formu açıklayabilir misiniz? Bu checkPass, onsubmit işlevinizde mi? – wajiw

cevap

3

kullanın Bu formu ait onsubmit olayı:

onsubmit="return checkPass()" 

Veya gönderin düğmesi için bu bir (giriş etiketi): Eğer varsa

onclick="return checkForm()" 
2

xhtml kullanarak 'onsubmit' küçük harf olduğundan emin olun. M2Y söylediği gibi

<form onsubmit="return checkPass()" ... > 
1

, sen neden bir nitelik olarak bu şekilde bir olay işleyicisi atadığınızda, aslında ne içten olur ki yeni anonim işlev oluşturulur olduğunu

<form onsubmit="return checkPass();"> 

kullanmak gerekir öznitelikteki kodun etrafına sarılır ve bu işlev form gönderimini engelleyecek veya izin verecek değeri döndürmelidir. checkPass fonksiyonunu çalıştırır ama dönüş değerini atar

function() { 
    checkPass(); 
} 

:

Yani orijinal onsubmit nitelik dönüştü edilecektir. döndürecektir

function() { 
    return checkPass(); 
} 

böylece istenilen etki elde etmek, checkPass işlevi tarafından kendisine bulundu: özelliğinde return dahil ederek, dönüşmüş olacaktır.