我正在开发一个jQuery函数,它将表单数据转发到页面而不会干扰正常提交。只要我使用.submit()
捕获提交,我就可以毫无问题地执行此操作,但我必须对数据运行自己的验证,因为它独立于常规提交而运行。有没有办法让jQuery(或任何Javascript)检测到表单数据已经发布和验证?
欢呼声, 麦克
编辑:
工作流程如下所示:
1.用户输入数据
2.点击提交
3.网站运行验证并接受输入
4.将数据提交到新页面
5. jQuery函数检测到提交和接受的新数据,以便运行。
更多针对清晰度的修改
我想你们都错过了这个问题。我知道如何检测一个表格正在被提交(这是好的和花花公子)
这是不我想要的:
$(this).each(function(){
$(this).submit(function(){
*** Code ***
}
}
假设我有一个独立于我正在编写的代码运行的验证脚本。如何检测到这种情况,然后转到上面的提交代码?
答案 0 :(得分:2)
在onsubmit=""
元素上使用<form>
,但返回false。即:
<form action="?" method="post" onsubmit="validate_and_submit(this);return false;">
return false
阻止实际提交表单,以便您可以使用AJAX进行操作。
希望这有帮助!
答案 1 :(得分:2)
这里需要的是AJAX。因此,请发送到您的服务器并发布数据的XHR请求。服务器的响应现在将转到回调函数(您的jquery函数)。如果数据经过验证并且没有问题,那么您可以继续进行,否则就会停止。
您正在尝试通过正常的HTTP POST请求进行操作。
答案 2 :(得分:1)
编辑:原始澄清
如果您希望服务器仅接收经过验证的数据,那么只需确保在客户端验证发生之前未将其提交。您可以根据验证结果有选择地调用 event.preventDefault()来执行此操作。
$("#form").submit(function(event) {
//some stuff
if (validate(formdata) == false) {
event.preventDefault();
}
});
如果您希望服务器进行验证并提交给自己或其他服务,则应该将其作为服务器端工作流的一部分。所以它就像
1。)客户提交给Service1
2。)Service1验证
3。)Services1提交给Service2(这样service2永远不会从其他地方接收代码)