jQuery错误:ReferenceError:未定义completedInputs

时间:2013-05-10 13:23:32

标签: jquery

我正在编写一些jQuery,它将检查某个div中的所有输入和选择元素是否都有值集(非空),然后一旦它们都有值,它将显示下一个按钮然后滑动在表格的下一部分。

这是我的标记:

<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>

我的表单中有三个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,包含更多的表单元素。

正如您所看到的,我将一个名为completedInputs的变量设置为true或false,具体取决于该div中的所有其他元素是否已完成,但我仍然收到错误消息:

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

alert(completedInputs);

我似乎无法解决这个问题,因为我定义变量是真还是假,所以不确定为什么它说它是未定义的。

有人可以看到我哪里错了吗? 谢谢

1 个答案:

答案 0 :(得分: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);