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

また、検証する要素ごとに異なるスクリプト セクションを使用していますか (または、この方法でカット アンド ペーストしただけですか?)。おそらく、そのすべてを 1 つの同じスクリプト ブロックで行うことができます。

更新、拡張された回答:

コードには、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 に答える