【问题标题】:show div based on textbox value根据文本框值显示 div
【发布时间】:2013-10-03 14:07:52
【问题描述】:

我有一个输入字段,可以从 db 中获取它的值,可以说值是 M、K、H、J、V 或 G,具体取决于它需要用 aaa、bbb、ccc、ddd 打开 div 的值, eee 或 fff 作为文本。

页面上显示的代码如下,我省略了该部分正在工作的数据库中的检索部分(输入框显示 M、K、H、J、V 或 G,具体取决于 id。)

echo "<input type='text' name='periode' id='periode' data-related-item='" .$row['periode']. "' value='" .$row['periode']. "'>";
echo "<div class='hidden'><div id='M'>aaa</div></div>";
echo "<div class='hidden'><div id='K'>bbb</div></div>";
echo "<div class='hidden'><div id='H'>ccc</div></div>";
echo "<div class='hidden'><div id='J'>ddd</div></div>";
echo "<div class='hidden'><div id='V'>eee</div></div>";
echo "<div class='hidden'><div id='G'>fff</div></div>";

当我在开发人员模式下检查源代码时,它显示数据相关项部分已从数据库中正确检索:

<input type="text" name="periode" id="periode" data-related-item="M" value="M">

我想使用以下 JS,但我需要更改它以使用文本框。

<script type="text/javascript">
function evaluate1(){
var item = $(this);
var relatedItem = $("#" + item.attr("data-related-item")).parent();

if(item.is(":checked")){
    relatedItem.fadeIn();
}else{
    relatedItem.fadeOut();   
}
}

$('input[type="checkbox"]').click(evaluate1).each(evaluate1);
</script> 

最简单的方法是改变路线:

$('input[type="checkbox"]').click(evaluate1).each(evaluate1);

进入

$('input[type="textbox"]').click(evaluate1).each(evaluate1);

但是我需要做什么:

if(item.is(":checked")){

提前感谢您的帮助。

我尝试了以下方法,但它不起作用。

if(item.is("M||K||H||J||V||G")){

罗伯特·罗萨斯的解决方案

解决方案在jsfiddle中

http://jsfiddle.net/dXTtz/7/

【问题讨论】:

  • 你为什么不做一个ajax调用并根据你输入的字符串将你想要的输出加载到一个div中?
  • 我不知道如何进行 ajax 调用,而且我没有输入字符串。值 M、K、H、J、V 或 G 是从我没有填写的 DB 中检索的。
  • 我觉得你的问题有点不对?所以你想要复选框/下拉列表/..?要填充这些内容并单击它们,您想要一个带有指定文本的 div 吗?
  • 值 M、K、H、J、V 或 G 从 DB 中检索并插入到文本框中。现在我想要一个 js 代码,当文本框为 M 时显示 div id M 或在文本框为 J 时显示 div id J。我的问题变得复杂,因为我试图用我从互联网上挑选的一段代码来做到这一点。我不能只要求某人为我编写代码,这将是最简单的方法,但对所有 SO 贡献者来说也很烦人。
  • 好吧,你完全失去了我:我唯一能说的是:1.你根据你从数据库中获得的值创建一个 div,或者创建一个类似下拉列表的东西,然后创建div 根据,但是如果你在文本框中加载所有数据,你不能用它做任何事情吗?

标签: javascript php html textbox


【解决方案1】:

我根据您提供的代码制作了这段代码:

$(document).ready(function(){

$("#periode").keyup(function(){
 var valor = $("#periode").val();
    $(".hidden").each(function(){
     var hijo = $(this).children().attr('id');   
     if(hijo == valor)
     {
      $(this).removeClass("hidden");
     }
    });
});

});

在这里工作:http://jsfiddle.net/robertrozas/dXTtz/2/

这种方式适用于页面加载:http://jsfiddle.net/robertrozas/dXTtz/4/

页面加载和移除多余的隐藏 div:http://jsfiddle.net/dXTtz/5/

【讨论】:

  • 谢谢你,这已经非常接近我想要的了。我做了一个小改动。 jsfiddle.net/dXTtz/3 我需要如何更改 javascript 以便它在页面加载时工作。因为该值不是输入而是从 db 中检索的。
  • 感谢您的编辑(页面加载),这是一个绝妙的解决方案。但是当这个jsfiddle.net/dXTtz/5 中的值是 H 时,它会显示很多空白,我怎样才能摆脱那个空白。
  • 抱歉愚蠢的问题,我的最后一条评论我需要将 css 部分更改为 .hidden{display:none}
  • 这是因为另一个 div 仍然存在,但被隐藏了......如果在页面加载时执行......等待我再次更新答案;)
  • 非常感谢您。太棒了,我不懂代码,但我正在努力弄清楚。最主要的是它有效!
猜你喜欢
  • 1970-01-01
  • 2017-03-30
  • 1970-01-01
  • 1970-01-01
  • 2012-03-19
  • 2013-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多