2016-03-15 56 views
0

我必須在HTML表單中進行一些驗證。我不明白爲什麼當這兩個條件之一是錯誤的時候提交表單。 '主' 的功能是這樣的:爲什麼在條件爲false時提交表單?

var marc = false; 
var dnif = false; 

window.addEventListener('submit', function() { 
    marc = marcado(); 
    dnif = nif(); 
    if(marc && dnif){ 
     document.getElementById("formm").submit(); 
    } 
}, false); 

的方法有這些:

function nif() { 
    var campo = document.getElementById("dni_id"); 
    var dni = campo.value; 
    numero = dni.substr(0, dni.length - 1); 
    let = dni.substr(dni.length - 1, 1); 
    numero = numero % 23; 
    letra = 'TRWAGMYFPDXBNJZSQVHLCKET'; 
    letra = letra.substring(numero, numero + 1); 
    if (letra !== let) { 
    alert('El formato del DNI introducido no es el correcto'); 
    document.form.dni_id.focus(); 
    return false; 
    } else { 
    return true; 
    } 


function marcado() { 
    if (document.form.terminado.checked) { 
    return true; 
    } else { 
    alert("Debes aceptar los términos y condiciones"); 
    document.form.terminado.focus(); 
    return false; 
    } 
} 

的功能是確定。當我用控制檯試用它們時,它們工作正常。 然後我執行該頁面,出現「警報」並且返回錯誤,但表單提交。

有什麼想法?謝謝您的幫助。

+0

你需要用'event.preventDefault()' –

回答

1

您當前的代碼是附加到表單提交的偵聽器,意味着一旦表單被提交代碼運行,您應該綁定到按鈕並單擊使用,並在該代碼塊內使用event.preventDefault()來防止自動的HTML表單提交。

或者,您可以更改按鈕來輸入按鈕,而不是提交,並使用html onclick重定向到處理表單提交的JavaScript函數。編輯:我相信我錯了,你應該仍然可以綁定提交,只要你包括,event.preventDefault();在你的綁定中,表單不應該自動提交。但是我的其他解決方案也應該可以正常工作。

+0

來阻止表單的默認動作。很好的答案。非常感謝,現在一切正常! – aserrin55

相關問題