Показать скрытый div на основе любого значения, содержащегося в поле ввода - PullRequest
1 голос
/ 23 марта 2012

У меня есть следующая отметка div, который содержит форму.Форма имеет основной поисковый div и расширенный div.

 <div class="form">
     <form>
         <input type="text" name="first_name">
         <input type="text" name="last_name">

       <div class="Basic" class="slide">
         <input type="text" name="location"> 
       </div>

       <a class="toggle-link" onclick="ShowDiv('Adv');">+ show advanced fields</a>

      <div id="Adv" class="slide hidden">
         <input type="text" name="first_name2">
         <input type="text" name="last_name2">
         <input type="text" name="street">
         <input type="text" name="town">
         <input type="text" name="country">
       </div>
     </form>

     <a onclick="ShowDiv('Basic');">- hide advanced fields</a> 
    </div>

Функция скрытия / показа работает на основе следующего сценария:

 function HideDiv() {
          $('.slide').hide();
      }
      function ShowDiv(ctrl) {
         HideDiv();
     $('#' + ctrl).show();
      }
       ShowDiv('Basic'); 

Моя проблема (и это дополнительный запрос на основе существующего вопроса, который мне никогда не удавалосьдобираться до работы) - это то, что я хочу, чтобы пользователь, когда он возвращается в эту форму поиска, был представлен с расширенным открытием div, если он сначала использовал форму расширенного поиска.Поэтому, если любое из полей ввода содержит какие-либо значения данных, div должен быть открыт, когда пользователь вернется на страницу.

У меня есть этот код, но он не работает.

   $(document).ready(function () {

     $(function(){
       $("div#Adv input").each(function(){
           if($(this).val()!='')
              $(this).parent().parent().show();
              return;                       
  });
 });

Ответы [ 3 ]

1 голос
/ 23 марта 2012
$(function(){
    if($("#Adv input[value!='']").length){
        $('#Adv').show();
        $('a.toggle-link').hide();
    }
});
0 голосов
/ 23 марта 2012

Я полагаю, вам не хватает скобок там

$(document).ready(function(){
     $(function(){
       $("div#Adv input").each(function(){
           if($(this).val()!='')
           {
              $(this).parent().parent().show();
              return;
           }
     });
});
0 голосов
/ 23 марта 2012

Вы должны сделать

   $("div#Adv input").each(function(){
       if(this.value !== ''){
          //get the first ancestor with class=slide and show it
          $(this).closest('.slide').show();
          return;
        }
    });
...