2013-10-11 44 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