2014-03-31 64 views
0

我目前已經有一個驗證我的表單並顯示錯誤,如果一個字段沒有完成的JavaScript代碼。我也想知道我怎麼可以在窗體中回顯錯誤,例如,如果'fname'沒有填寫,那麼這說'你沒有填寫fname',或者如果'fname'和fcompany'沒有填寫在這裏說javascript validate form check - echo out errors in form?

You did not fill in fname 
you did not fill in fcompany 

繼承人我的html:

<form name="myForm" action="demo_form.asp" onsubmit="return validateForm()" method="post"> 
Company Name: <input type="text" name="fname"> 
Company Registration Number: <input type="text" name="fcompany"> 

繼承人我的javascript:

<script> 
function validateForm() 
{ 
var x=document.forms["myForm"]["cname"].value; 
if (x==null || x=="") 
    { 
document.body.scrollTop = document.documentElement.scrollTop = 0; 
    document.getElementById("alertBox").style.display='block'; 
    return false; 
    } 
} 
</script> 
+0

'的document.getElementById( 「alertBox」)的innerHTML = 「你的錯誤在這裏」'? – gaurav

回答

1

讓你的驗證函數生成錯誤的數組,然後讓另一個函數採取錯誤陣列和構建HTM L:。

http://jsfiddle.net/J9LJj/

function displayErrors(errors){ 
    var container = document.getElementById("alertBox"); 
    var html = "<ul>"; 

    for(var i=0; i<errors.length; i++){ 
     html += "<li>" + errors[i] + "</li>"; 
    } 
    html += "</ul>"; 

    container.innerHTML = html; 
    container.style.display = "block"; 
} 

function validateForm(){ 
    var fname = document.forms["myForm"]["fname"].value; 
    var fcompany= document.forms["myForm"]["fcompany"].value; 

    var errors = []; 

    if(fname == ""){ 
     errors.push("you did not fill in fname"); 
    } 
    if(fcompany == ""){ 
     errors.push("you did not fill in fcompany"); 
    } 

    if(errors.length > 0){ 
     displayErrors(errors); 
     return false; 
    } else { 
     return true; 
    } 
} 
+0

嗨,謝謝你,但它不工作,它不取消窗體的默認操作,表單提交到下一頁,沒有顯示任何錯誤。我想要取消默認的表單動作,並在父頁面上顯示錯誤 –

+0

這是行得通的,請參閱此演示:http://jsfiddle.net/J9LJj/如果它不適合你,請檢查字段名稱'fname'和'cname'對於你的實際表單是正確的。也看看應該縮小問題的錯誤控制檯(F12)。 – MrCode