0

我正在尝试向 ajax 提交的表单添加验证,并使其部分工作。

这是提交表单的代码:

<script type="text/javascript">
$(document).ready(function(){$(".sendName").click(function(){
var Email=$("#Email").val();
var Name=$("#Name").val();
var ErrorType=$("input:radio[name=ErrorType]:checked").val();
var Univer=$("#Univer").val();
var ErrorMessage=$("#ErrorMessage").val();
$.post("report.php",{Email:Email,Name:Name,ErrorType:ErrorType,Univer:Univer,ErrorMessage:ErrorMessage},function(data){$("#loadName").html(data).effect('bounce', { times: 5, distance: 30 }, 300);
  });
 });
});
</script>

该代码完美运行。

我也在使用 livevalidation 插件,并且大多数情况下它也可以正常工作。我遇到的唯一问题是从提交表单的函数中调用验证代码。

通常验证码是这样调用的:

 <form onsubmit="return validate(this)">

但是,因为表单是由 ajax 提交的,所以当前的表单标签是:

 <form onSubmit="return false;">

所以我需要做的是从通过ajax提交表单的函数中调用验证函数。

我该怎么做这样的事情?两个脚本都可以自己正常工作,这只是我需要弄清楚的最后一件事。

所以我需要在调用ajax函数的时候调用validate函数,如果表单验证了脚本就可以完成ajax请求,如果表单没有验证就不应该提交。

我做了一些搜索,发现了几个类似的问题,但没有解决方案。任何帮助,将不胜感激。

4

2 回答 2

0

更简单的方法是仅在出现验证错误时取消提交,否则让提交正常进行。

<form id="new-item" method="post" action="/i">

然后在你的javascript中:

$('#new-item').submit( function () {

  var valid = true;

  // do you validation logic
  valid = validate(this);

  // returning true will let the normal submit action happen
  // returning false will prevent the default action (i.e. the form will not be sumitted)
  return valid;

});

如果您不想使用标准的提交功能(尽管这是一种最佳做法,因为它在禁用 javascript 时有效)您会做类似的事情,但总是返回 false。

$('#new-item').submit( function () {

  var valid = true;

  // do you validation logic
  valid = validate(this);

  if (valid ) {
    // send your ajax post request here
  }


  // returning true will let the normal submit action happen
  // returning false will prevent the default action (i.e. the form will not be sumitted)
  return false;

});
于 2012-05-06T04:33:32.890 回答
0

同意账单

假设这种形式

<form id="formId" ...
  .
  .
  <input type="submit" />
</form>

使用您的代码:

<script type="text/javascript">
$(document).ready(function(){
  $("#formId").submit(function(){
    if (!validate(this)) return false;
    var Email=$("#Email").val();
    var Name=$("#Name").val();
    var ErrorType=$("input:radio[name=ErrorType]:checked").val();
    var Univer=$("#Univer").val();
    var ErrorMessage=$("#ErrorMessage").val();
    $.post("report.php",
      {Email:Email,Name:Name,ErrorType:ErrorType,Univer:Univer,ErrorMessage:ErrorMessage},function(data){$("#loadName").html(data).effect('bounce', { times: 5, distance: 30 }, 300);
    });
    return false; // cancel normal submission
   });
});
</script>
于 2012-05-06T05:03:17.393 回答