【问题标题】:Hide/show div based on form input filed根据表单输入字段隐藏/显示 div
【发布时间】:2012-03-22 15:05:29
【问题描述】:

我有一个高级搜索 div,其中包含 5 个表单输入字段。这个 div 默认是隐藏的,它是搜索表单的一部分。当用户从结果页面返回到此页面时,我希望 div 显示假设已填充 5 个字段中的任何一个。

html是

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

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

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

隐藏/显示 div 的现有 jQuery 代码是:

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

【问题讨论】:

  • 那么你的问题是什么?
  • 当输入改变时你是否应该不监听事件然后查看 value.length 是否为 5 ?将其设置为 display:block ?
  • 好吧,我的代码似乎不起作用
  • 如果输入字段被隐藏,您将如何填充它们?
  • @Sparky672 如果只有 1 条语句,则不需要大括号

标签: jquery input show-hide


【解决方案1】:

如果您想在页面加载时检查表单的输入元素,这些元素包含在 div 中(id 为“Adv”),那么您应该在文档就绪事件中运行检查

$(function(){
    $("div#Adv input").each(function(){
        if($(this).val()!='')
           $(this).parent().parent().show(); // 1st parent is form, 2nd parent is Adv div 
           return;                       
    });
});

小提琴是here

仅当您的任何输入在页面加载时填充(包含数据)时才有效。

更新您的问题后,我更新了我的小提琴here

【讨论】:

  • 这就是我一直在寻找的东西,但不幸的是似乎没有用。我的页面包含表单内这 5 个字段中的一些字段中的数据,但 div 显示隐藏
  • toggle-link 我认为不需要更改,因为它现在已经全部断开了。我认为您在没有它的情况下提交的第一个代码对我来说确实有意义,但不幸的是,即使输入字段填充了一些值,div 仍然是隐藏的......
  • 我现在再次编辑了我的代码,以向您展示默认情况下隐藏/显示 div 的现有 jQuery。也许这就是为什么它不适用于您提供的代码?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-15
  • 2013-07-23
  • 2012-09-27
  • 1970-01-01
  • 2012-08-11
  • 2021-10-01
  • 2018-10-30
相关资源
最近更新 更多