【问题标题】:PHP - WebCalendar - hide field based on dropdown list selectionPHP - WebCalendar - 基于下拉列表选择隐藏字段
【发布时间】:2011-10-29 00:48:22
【问题描述】:

使用 WebCalendar 应用程序http://www.k5n.us/webcalendar.php,我正在为额外字段的工作方式创建一些自定义编辑。

特别是,我创建了两个额外的字段;其中一个是县的下拉列表,另一个是文本字段。下拉列表中的一个选项是**OTHER,文本字段可供用户指定他们的**OTHER 选择。

我可以在 PHP 中指定下拉列表和选择:

if ($site_extras[1][3] == '**OTHER' )
  { do something to hide html class .other_field }

任何提示或推动我可能会根据下拉列表输入隐藏/显示文本字段的方向?

请根据需要编辑和删除/添加标签。我只是选择了可能与此操作的需求相关的那些。

编辑:HTML sn-p

<table class="extra_table" summary="">
            <tr>
              <td class="aligntop bold">*Location:</td>
              <td class="extra_field_input">
                <select name="County">
                  <option value="Select County...
"  selected="selected">Select County...

</option>
                  <option value="DODGE" >DODGE
</option>
                  <option value="DOUGLAS" >DOUGLAS
</option>
                  <option value="LANCASTER" >LANCASTER
</option>
                  <option value="MADISON" >MADISON
</option>
                  <option value="**OTHER" >**OTHER
</option>
                  <option value="--------------------" >--------------------

</option>
                  </select>

                </td>
              </tr>
            <tr>
              <td class="aligntop bold">**If Other, Please Specify:</td>
              <td class="extra_field_input">
                <input type="text" size="17" name="Other_County" value="" />
                </td>
              </tr>

【问题讨论】:

  • 该字段需要另一个定义特征而不是非唯一类。我看不出 PHP 是从哪里来的,这听起来像是需要单独使用 JS 来处理。为此,您最好发布生成的 HTML 的 sn-p。
  • 如果有人愿意查看程序的编辑文件,您可以在问题中的链接处下载它,并查找文件 edit_entry.php 和 site_extras.php。在文件中对 EXTRA_ 进行字符串搜索,它应该会让你关闭。我知道大多数人不会,这个问题是一个拖累=/
  • @DavidBarker 通过input nameoption value 定位可能吗?请原谅我的无知,因为我是 php/javascript/jquery 的初学者。
  • 我不明白您上一个问题中没有解决的部分问题:stackoverflow.com/questions/7918476/…
  • Hmmmmmmm....我刚刚花了一段时间试图帮助你,你已经有了答案!!!

标签: php javascript jquery html css


【解决方案1】:

看看这个 jsfiddle:http://jsfiddle.net/2bt8D/

我必须在您的文本字段中添加一个额外的类以区分它extra,并将您的输入/文本字段设置为style="display:none;" 开始。如果这在您使用的框架的限制范围内是可能的,那么您就是赢家。 (注意:肯定有更好的方法来编写 Jquery!)

jquery 语句:

$(function() {
    $("select").change(function() {        
        var selectValue = $(".extra_field_input select").val();

        if (selectValue == "**OTHER") {
            $(".extra_field_input input").show();
            $(".extra").show();
        } else {
            $(".extra_field_input input").hide();
            $(".extra").hide();
        };
    });
});

需要 HTML

<table class="extra_table" summary="">
<tr>
    <td class="aligntop bold">*Location:</td>
    <td class="extra_field_input">
         <select name="County">
              <option value="Select County..." selected="selected">Select County...</option>
              <option value="DODGE" >DODGE</option>
              <option value="DOUGLAS" >DOUGLAS</option>
              <option value="LANCASTER" >LANCASTER</option>
              <option value="MADISON" >MADISON</option>
              <option value="**OTHER">**OTHER</option>
         </select>
    </td>
</tr>
<tr>    
    <td class="aligntop bold extra" style="display:none;">**If Other, Please Specify:</td>
    <td class="extra_field_input">
          <input style="display:none;" type="text" size="17" name="Other_County" value="" />
    </td>
</tr>
</table>

【讨论】:

  • 每个表都是用 PHP 自动生成的,对于所有 class="extra_table" 的表,所有的类都是用相同的名称生成的,我无法控制只拉出其中一个来改变它的类。
  • 好吧,恐怕没有任何独特的挂钩到特定元素会严重限制您管理特定于该元素的任何 JavaScript 的能力。留给您的选择很少。
  • 我发现 Jquery 可以与 webcalendar 一起使用,我将编辑控制 HTML 生成页面的主 .php 文件以创建类extra,每个类都有一个递增的值,因此它'将显示为 extra1 extra2 等。所以我希望今天能对此进行测试,我会报告回来。
  • 我的项目 atm 受到阻碍,因此可能需要一段时间才能对其进行测试。但我在投票/跟进我的问题方面有着良好的记录。感谢您的帮助。
  • 很遗憾,更改功能不起作用,因为页面在提交之前不会更新选择字段中的选定选项。不知道为什么,因为这不是我的程序。但是我改用了点击功能并针对整个页面,所以每次用户点击时,它都会触发 jquery 语句。我还为父 分配了类名,这样我就可以只使用 上的显示/隐藏功能,而不是两个单独的 。感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多