2012-01-18 1 views
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');       
    }); 
}); 

誰かが私には私は何を理解する助けてもらえ間違っている?キーアップイベントが発生していないようです。

答えて

0

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

jQuery Validation

+0

私はそれをよく知っていますが、このプロジェクトでは使用できません。私の妥当性確認は機能しています。パネルごとにフィールドの状態、完了または不完全を検出することに問題があります。 – designmode

0

まず最初に、keyUpイベントは、解雇される心配はありません。 2番目のことは、ラインで重大なエラーがありますif (!$(this).val()) {標準のjavascriptで間違った考えによって引き起こされたこのスペル。それが翻訳されていれば、値が存在するかどうかをテストしたいと思っていました。真実は、価値は常に存在するということです。それはちょうど真の価値です。

my exampleをご覧ください。いくつかの修正の後、あなたが望むようにうまくいきます。

+0

ちょっと微妙な調整がありますが、今はトリガーが動作しているようですが、新しい問題が出てきているようです。私のためには、選択と入力という2種類のフォーム要素があります。これらのイベントをバインドすると、別々の結果が生成されます。これらを束縛するか、少なくともそれらの間に関係を作り出す方法を知っていますか?[例](http://jsfiddle.net/designmode/Jb7pg/10/)。 – designmode

+0

私はちょうど推測することができますコードなし。解決策を推測するのが最善の方法ではありません。 jsfiddle.netで現在のコードを実際のiofにすることはできますか? – reporter

+0

私は以前のコメント "example"に1つを提供しました。ここでは、[作業デモ](http://jsfiddle.net/designmode/Jb7pg/10/) – designmode

関連する問題