2013-05-10 48 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