2012-03-23 3 views
1

양식이 들어있는 div의 다음 표시가 있습니다. 이 양식에는 기본 검색 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;      
    }); 
}); 

답변

1
$(function(){ 
    if($("#Adv input[value!='']").length){ 
     $('#Adv').show(); 
     $('a.toggle-link').hide(); 
    } 
}); 
+0

이것은 일했다. 이제 내가 가진 유일한 문제는 div가 표시 될 때 + show advanced fields도 표시된다는 것입니다. 코드에서 div를 공개 할 때 class = "toggle-link"가 숨겨집니다. – gek

+0

@ aa1. 나는 대답에 그것을 덧붙였다. – gdoron

0

당신은

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

흠 일부 괄호를 누락 생각 중 하나가 작동하지 않는 것 같습니다. div # Adv는 숨겨진 상태로 유지됩니다. – gek

+1

@ aa1 그것은 여기에서 작동하기 때문에 엉망입니다. http://jsfiddle.net/RYNRQ/이 코드를 $ (document) .ready() 안에 넣었습니까? –

+0

예. 나는 이제 내 페이지의 기존 스크립트가 있기 전에 스크립트의 위치를 ​​옮겼다. 감사합니다 – gek

0

을해야 당신이

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

내 페이지에 정확히 코드를 복사했지만 Div # Adv는 여전히 무엇이든지 숨겨져 있습니다. 이 코드를 어디에 두어야할까요? 지금은 숨기기/표시 스크립트가 외부 파일에서 참조되는 반면 내 페이지의 맨 아래에 포함됩니다. – gek

+1

'$ Adv'를 표시하려면'$ (this) .parent(). parent(). show() '대신'$ (this) .parent(). show()'를 사용하십시오. – slash197

관련 문제