2013-10-11 74 views
0

我在窗體上使用jQuery驗證插件http://jqueryvalidation.org/。我也使用了一點javascript,這意味着窗體的響應在一個彈出窗口中打開。我遇到的問題是,如果表單不驗證,但用戶嘗試提交,則會出現一個空白的彈出窗口。我希望彈出窗口只有在窗體驗證的情況下才會出現。這裏是我的代碼:Jquery驗證啓用彈出如果窗體驗證

HTML

<form id="contactform" action="formmail.php" method="post" name="contactform" onsubmit="popupform(this, 'join')"> 
    <input name="env_report" type="hidden" value="REMOTE_HOST,REMOTE_ADDR,HTTP_USER_AGENT,AUTH_TYPE,REMOTE_USER" /> 
    <input name="recipients" type="hidden" value="[email protected]" /> 
    <input type="hidden" value="http://www.mydomain.co.uk/thankyou.html" name="good_url" /> 
    <input type="hidden" value="http://www.mydomain.co.uk/error.html" name="bad_url" /> 
    <input type="text" placeholder="Name..." name="realname" class="input-text required" required /> 
    <input type="email" placeholder="Email..." name="email" class="input-text required" required /> 
    <input type="text" placeholder="Phone..." name="phone" class="input-text required" required /> 
    <input class="submit button" name="Submit" type="submit" value="Submit" /> 
</form> 

的Javascript

$(document).ready(function() { 
    $("#contactform").validate(); 
}); 

function popupform(contactform, windowname){ 
    if (! window.focus)return true; 
    window.open('', windowname, 'height=250,width=500,scrollbars=no'); 
    contactform.target=windowname; 
    return true;} 

如果你能幫助我無論如何將不勝感激。謝謝。

+0

似乎在這裏很好,只有彈出窗口顯示時驗證字段。但是,請注意,輸入類型'email'沒有檢查實際格式,它檢查的是它包含@。所以asdf @ a被認爲是有效的。 – larssy1

回答

1

不是使用表單的onsubmit屬性調用popupform,而是從驗證插件的提交處理程序調用它。

$(document).ready(function() { 
    $("#contactform").validate({ 
     submitHandler: function(form) { 
      popupform(form, 'join'); 

      // do other things for a valid form 
      form.submit(); 
     } 
    }); 
}); 
+0

完美,謝謝湯姆。 – DesignSubway