Jquery 根据输入字段中包含的任何值显示隐藏的div

Jquery 根据输入字段中包含的任何值显示隐藏的div,jquery,input,show-hide,Jquery,Input,Show Hide,我有一个包含表单的div的以下标记。表单有一个基本搜索div和一个高级div <div class="form"> <form> <input type="text" name="first_name"> <input type="text" name="last_name"> <div class="Basic" class="slide"> <i

我有一个包含表单的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>
我的问题(这是基于一个我从未尝试过去工作的现有问题的后续问题)是,我希望用户返回此搜索表单时,如果他首先使用了高级搜索表单,则显示打开的高级div。因此,如果任何输入字段包含任何数据值,当用户返回页面时,div应该打开

到目前为止,我有这个代码,但它不起作用

   $(document).ready(function () {

     $(function(){
       $("div#Adv input").each(function(){
           if($(this).val()!='')
              $(this).parent().parent().show();
              return;                       
  });
 });
你应该这样做

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

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

我相信你遗漏了一些括号

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

我相信你遗漏了一些括号

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

我已经在我的页面上完全复制了你的代码,但无论如何div#Adv仍然是隐藏的。我把代码放在哪里重要吗?目前,它包含在我的页面底部,而隐藏/显示脚本是从外部文件引用的。如果要显示
#Adv
,请使用
$(this.parent().show()
,而不是
$(this.parent().parent().show())
我已将您的代码完全复制到我的页面上,但无论发生什么情况,div#Adv仍然保持隐藏状态。我把代码放在哪里重要吗?目前,它包含在我的页面底部,而隐藏/显示脚本是从外部文件引用的。如果要显示
#Adv
,请使用
$(this.parent().show()
,而不是
$(this.parent().parent().show()
@aa1,因为它在这里工作,所以您是否将此代码放在$(document.ready()中)是的。现在,我已经将脚本的位置移到了页面上其他一些现有脚本之前,它也起到了作用。Thanks@aa1这是trange,因为它在这里工作。您是否将此代码放入$(document).ready()中?是的。现在,我已经将脚本的位置移到了页面上其他一些现有脚本之前,它也起到了作用。谢谢这似乎奏效了。现在我唯一的问题是,当显示div时,+显示高级字段也是如此。需要在代码中添加什么,以便在显示div时,class=“toggle link”是hidden@aa1. 我把它加到了答案上。这似乎奏效了。现在我唯一的问题是,当显示div时,+显示高级字段也是如此。需要在代码中添加什么,以便在显示div时,class=“toggle link”是hidden@aa1. 我把它加到了答案上。