2

我有以下代码来验证提交时的表单:

<form enctype='multipart/form-data' 
   action='ad_posting_process.php' 
   method='post'>
   Price: <input type=text name=price 
                  id="price" style=width:90px;>
<script type="text/javascript"> 
  var f3 = new LiveValidation('price');
  f3.add( Validate.Numericality );
</script>
Email: <input type=text name=email 
                  id="email" style=width:240px;>
<script type="text/javascript"> 
  var f20 = new LiveValidation('email');
  f20.add( Validate.Email );
</script>
<script type="text/javascript">
  var title = new LiveValidation( 'title', {onlyOnSubmit: true } );
  title.add( Validate.Email );
  var field2 = new LiveValidation( 'price', {onlyOnSubmit: true } );
  field2.add( Validate.Acceptance );
  var field3 = new LiveValidation( 'email', {onlyOnSubmit: true } );
  field3.add( Validate.Presence );
</script>
<input type=submit name=action value=Post>
</form>

电子邮件验证正在工作,但如何在提交时验证整个表单?

问候:

4

1 回答 1

3

我对这个库不是很熟悉,但似乎你应该能够通过简单地添加来做到这一点:

{onlyOnSubmit: true } 

作为要验证的每个元素的参数,例如:

var f20 = new LiveValidation('email');
f20.add( Validate.Email, {onlyOnSubmit: true });

顺便说一下,你看过这个页面吗?: http: //livevalidation.com/examples#exampleForms

此外,您是否对每个元素使用不同的脚本部分进行验证(或者它们只是以这种方式剪切和粘贴在这里?)。您可能可以在同一个脚本块中完成所有这些操作。

更新,扩展答案:

您可能会尝试修复您的代码的一些问题,因为它们可能会导致 JS 出现问题:

  • 确保在所有字段(如 name="price" 等)周围使用 "(双引号,而不是单引号!)
  • 您是否有一个名为“标题”的字段,因为我看不到它 - 这可能导致脚本失败(?)。

确保以其中一种方式关闭每个 html 元素。

<input></input>
<input />

您的代码可能看起来像这样:

<form enctype="multipart/form-data"
  action="ad_posting_process.php" 
  method="post">

Price: <input type="text" name="price"
              id="price" style="width:90px;">
Email: <input type="text" name="email"
              id="email" style="width:240px;">

<script type="text/javascript"> 
var f3 = new LiveValidation('price');
  f3.add( Validate.Numericality );
  var f20 = new LiveValidation('email');
  f20.add( Validate.Email );
  var title = new LiveValidation( 'title', {onlyOnSubmit: true } );
  title.add( Validate.Email );
  var field2 = new LiveValidation( 'price', {onlyOnSubmit: true } );
  field2.add( Validate.Acceptance );
  var field3 = new LiveValidation( 'email', {onlyOnSubmit: true } );
  field3.add( Validate.Presence );
</script>
<input type="submit" name="action" value="Post" />
</form>

此外,请检查您的浏览器是否存在任何与 javascript 相关的错误。大多数现代浏览器都有某种形式的错误面板或 js 调试工具。

于 2012-07-02T11:28:04.503 回答