0

現在、特定の div 内のすべての入力要素と選択要素に値が設定されている (null ではない) かどうかを確認する jQuery を作成しています。すべての値が設定されると、次のボタンが表示され、次にスライドします。フォームの一部。

ここに私のマークアップがあります:

<div id="signupFormInner">
    <form action="/" method="post" id="form1">
        <div id="slide1">       
            <label for="title">Title:</label>
            <select name="title" id="title">
                <option value="">-- Please select --</option>
                <?php foreach($this->titles as $title) { ?>
                    <option value="<?php echo $title; ?>"><?php echo $title; ?></option>

                <?php } ?>
            </select>
            <label for="firstname">First Name:</label><input type="text" name="firstname" id="firstname" />
            <label for="lastname">Last Name:</label><input type="text" name="lastname" id="lastname" />
            <label for="email">Email Address:</label><input type="email" name="email" id="email" /><label for="email">Confirm Email Address:</label><input type="email" id="email_confirm" />

        </div>
        <div id="slide2">
            content in here

        </div>
        <div id="slide3">
            content in here

        </div>
    </form> 
</div>

フォーム内に 3 つの div があり、div 内のすべての入力フィールドが完了するとスライドします。試行されたjQueryは次のとおりです。

jQuery('#signupFormInner input, #signupFormInner select').change(function(i, v) {
        var parentDivId = jQuery(this).parent().attr('id');
        jQuery("#" + parentDivId + " input, #" + parentDivId + " select").each(function(i2, v2) {
            if(jQuery(v2).attr('value') == "") {
                var completedInputs = false;
            } else {
                var completedInputs = true;
            }               
        });
        alert(completedInputs);
    });

私がここでやろうとしているのは、ユーザーがフォームの要素を変更すると、jQuery はフォームのその div 内の他のすべての要素にも値があるかどうかを確認し、そうであれば、前に述べたように、それらを許可しますボタンを押して次の div をスライドさせ、フォームのさらに多くの要素を含めます。

ご覧のとおり、その div 内の他のすべての要素が完了しているかどうかに応じて、completedInputs という変数を true または false に設定していますが、次のようなエラーが表示され続けます。

ReferenceError: completedInputs is not defined
[Break On This Error]   

alert(completedInputs);

変数が true であるか false であるかを定義しているため、これを解決できないように見えるので、未定義であると言っている理由がわかりません。

私がどこで間違っているのか誰にもわかりますか?ありがとう

4

1 に答える 1

2

completedInputs範囲の問題 - 範囲外で定義する.each()

var completedInputs;
jQuery("#" + parentDivId + " input, #" + parentDivId + " select").each(function(i2, v2) {
            if(jQuery(v2).attr('value') == "") {
                 completedInputs = false;
            } else {
                 completedInputs = true;
            }               
});
alert(completedInputs);
于 2013-05-10T13:24:53.583 に答える