2013-04-22 3 views
1

Я пишуне представляют форму, если форма проверки не в состоянии

<form action='test.php' method='post'> 
............. 
<submit onclick='validate();'></submit> 
</form> 

function valiadte(){ 
    if(true){ 
     var form = getElementByID(........); 
     form.submit(); 
    } 
    else alert('error'); 
} 

но подоконник перейти к test.php, если удастся. как я могу избежать этого, перейдите в test.php, если не удается, или я могу передать какое-то сообщение в test.php?

Thx заранее.

оригинальный исходный код:

  <form id="tabS" method="post" action="stdRegister.php"> 
        <label>Account</label> 
        <input id="stdAccount" name="account" type="text" value="" class="input-xlarge" onblur="validateAccountAndID(this,document.getElementById('stdAccountHelp'));"> 
        <span class="help-block" id="stdAccountHelp"></span> 
        <label>Password</label> 
        <input id="stdPassword" name="password" type="password" value="" class="input-xlarge" onblur="validatePassword(this,document.getElementById('stdPasswordHelp'));"> 
        <span class="help-block" id="stdPasswordHelp"></span> 
        <label>Name</label> 
        <input id="stdName" name="name" type="text" value="" class="input-xlarge" onblur="validateName(this,document.getElementById('stdNameHelp'));"> 
        <span class="help-block" id="stdNameHelp"></span> 
        <label>IDNumber</label> 
        <input id="stdID" name="idNumber" type="text" value="" class="input-xlarge" onblur="validateAccountAndID(this,document.getElementById('stdIDHelp'));"> 
        <span class="help-block" id="stdIDHelp"></span> 
        <label>Department</label> 
        <select id="stdDepartment" name="department"> 
         <?php 
          while ($row = $result->fetch_assoc()){ 
            echo"<option>"; 
            echo $row['department']; 
            echo"</option>"; 
         } 
         ?> 
        </select> 
        <label>Grade</label> 
        <select id="stdGrade" name="grade"> 
         <option>1</option> 
         <option>2</option> 
         <option>3</option> 
         <option>4</option> 
        </select> 
        <div> 
         <button class="btn btn-primary" onclick="submitStudetForm();">Create Account</button> 
        </div> 
        <span class="help-block" id="stdRegisterHelp"></span> 
       </form> 

function submitStudentForm(){ 
    var form = document.getElementById('tabP'); 
    if(
     validateAccountAndID(document.getElementById('stdAccount'),document.getElementById('stdAccountHelp')) 
     && validatePassword(document.getElementById('stdPassword'),document.getElementById('stdPasswordHelp')) 
     && validateName(document.getElementById('stdName'),document.getElementById('stdNameHelp')) 
     && validateAccountAndID(document.getElementById('stdID'),document.getElementById('stdIDHelp'))){ 
     form.submit(); 
     alert("success"); 
    } 
    else { 
     alert("Something wrong in the form. Please check again!"); 
     return false; 
     //window.location.href='index.php'; 
    } 
} 
+0

Что вы тестирования, чтобы быть правдой? – auicsc

+0

form validation like length regexp –

+1

Как FYI, поэтому вам не нужно вмешиваться в отправку по умолчанию, вы можете использовать функцию onsubmit для выполнения вашей проверки. Таким образом, вы просто «вернете true», если все проверки пройдены, и форма будет продолжать подаваться (без необходимости получать форму и вручную отправлять ее снова) или «возвращать false», и в этом случае представление прекращалось и оставлялось вы на странице. – War10ck

ответ

2

Просто выполните функцию return false в корпусе else.

function validate(){ 
    if(true){ 
     return true; 
    } 
    else { 
     alert('error'); 
     return false; 
    } 
} 

А вы бы изменить HTML на:

<input type="submit" value="Submit" onsubmit="validate()"> 
+0

Кажется, он не работает для меня, он все еще идет вперёд. –

+2

Можете ли вы показать свой точный код? И вы внесли изменения в html? Имейте в виду, что прямо сейчас он говорит «if (true)», и я предполагал, что у вас есть фактическая проверка вместо «истина», иначе она всегда вернет true и будет отправлена. – Jonah

+0

Именно поэтому я спросил его, что он тестирует, чтобы быть «истинным». – auicsc

1

Используйте это, чтобы остановить представление формы:

else { 
    alert('error'); 
    return false; 
} 

Кстати, ваше имя функции "valiadte", а не "проверки".

Смежные вопросы