2013-05-10 79 views
0

我目前正在写一些jQuery,将检查是否所有输入和选择元素在某个div有一个值设置(非空),然后一旦他们都有一个值它会显示下一个按钮,然后会在窗体的下一部分中滑动。jQuery的错误:ReferenceError:completedInputs没有定义

这里是我的标记:

<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的,这将横跨一次专区内的所有输入字段已经完成滑动。这里是尝试的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,包含更多的表单元素。

正如你可以看到我设置一个completedInputs为true或false因变量呼吁是否该分区中的所有其他元素已经完成,但我一直得到一个错误说:

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

alert(completedInputs); 

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

任何人都可以看到我要去哪里吗? 感谢

回答

2

范围问题 - 定义.each()

var completedInputs; 
jQuery("#" + parentDivId + " input, #" + parentDivId + " select").each(function(i2, v2) { 
      if(jQuery(v2).attr('value') == "") { 
       completedInputs = false; 
      } else { 
       completedInputs = true; 
      }    
}); 
alert(completedInputs); 
+0

阿呀completedInputs外!谢谢 – devoncrazylegs 2013-05-10 13:29:32

+0

不客气! – 2013-05-10 13:29:46