0

マルチパート フォームを作成しましたが、フォームの表示可能なフィールドセットの入力済みフィールドを検証する必要があります。すべての必須フィールドが完了すると、次のステップ ボタンが有効になります。

これまでのところ、100% 効果的ではないいくつかのオプションを試してみました。

HTML:

<div id="set1">
  <fieldset>
  <div>
    <label>field 1</label>
    <input name="f1" type="text" /><br />
    <span class="error"></span>
  </div>
  <div>
    <label>field 2</label>
    <input name="f2" type="text" /><br />
  </div>
  </fieldset>
</div>
<div id="set2">
  <fieldset>
  <div>
    <label>field 3</label>
    <input name="f3" type="text" /><br />
    <span class="error"></span>
  </div>
  .
  .
  .
  </fieldset>
</div>

jQuery:

$input = $('fieldset:visible div:has(span[class="error"]) input');
$next = $('fieldset:visible .button');
$input.keyup(function() {
  $input.each(function() {
    var trigger = false;
    $input.each(function() {
      if (!$(this).val()) {
        trigger = true;
      }
    });
    trigger ? $next.attr('class', 'disable') : $next.removeAttr('class');                           
  });
});

誰かが私が間違っていることを理解するのを手伝ってくれますか? keyup イベントが発生していないようです。

4

2 に答える 2

0

jQueryバリデーターを使用する必要があります。それはあなたの人生をずっと楽にしてくれるでしょう:

jQueryの検証

于 2012-01-18T14:04:11.960 に答える
0

まず、keyup イベントが発生しますが、心配はいりません。if (!$(this).val()) {2 つ目は、標準の JavaScript の間違った考え方が原因で、このスペルの行に重大なエラーがあります。値が存在するかどうかをテストしたいと思っていました。真実は、価値は常に存在するということです。それは単なる "" または実際の値です。

私の例を見てください。いくつかの修正の後、希望どおりに機能することを願っています。

于 2012-01-18T15:20:39.243 に答える