我有一个使用scriptaculous表单验证的表单,但我使用的是jquery ajax。在添加ajax之前,表单验证工作正常。一旦我添加了ajax,就像表单不再有效。 ajax只是在没有验证的情况下对表单进行求和。这就像ajax绕过了验证。
<script type="text/javascript">
jQuery('form').delay(3000).submit(function() {
string = jQuery("form").serializeArray();
jQuery.ajax({
type: "POST",
url: "../script_insert.php",
data: string,
dataType: "html",
success: function(html){
jQuery('#Right_Content').hide().html(html).fadeIn("slow");;
}
})
return false;
});
</script>
但是当我从页面中删除ajax时,它一切正常。页面验证。任何人都可以告诉我如何确保在ajax提交之前进行表单验证。我尝试了jquery延迟,但这也不起作用。感谢。
答案 0 :(得分:1)
为什么不添加验证作为.submit()
的第一件事?这样,无论有多少表单字段有焦点,您都确定表单已经过验证。
jQuery('form').submit(function() {
if (validate()) {
string = jQuery("form").serializeArray();
...
} else {
return false;
}
});
答案 1 :(得分:0)
url="../script_insert.php"
使用完整路径"url="http://www.yoursite.com/script_insert.php"
2.听起来你的剧本中没有“防止默认”。您需要做两件事:在加载之前清除输入和显示错误的div!
编号2:您可以使用放置在
中的jQuery提交替换ajax提交`"$(document).ready(function(){
$('#your_form').submit(function(){
$.post("http://your_site.com/script_insert.php",{ first_variable:$('#first_input_field').val(),second_variable:$('#second_input_field').val(),rand:Math.random()},function(data){
if(data=='yes'){do something}
if(data=='no'){do something else}});
return false;});
});
});'
在PHP验证中,如果输入正确且表单有效,请回显“是”,否则回显“否”。或者你想要的任何其他词。这也允许更大的灵活性。编辑以上内容以满足您的需求。根据需要添加变量,这样一切都将是jQuery。如果你想看一个有效的例子,给我发一条私信,我会告诉你它是如何工作的。有了上面的代码,我从来没有遇到任何问题。据我所知,jQuery还会在发送post请求之前自动清理输入,这为您提供了某种形式的安全性。