2013-04-04 108 views
1

我正在构建一个web表单,我希望能够允许用户从下拉菜单中选择一个选项,并根据他们选择哪个值,包含div将生产更多与该选项相关的领域。我用另一个项目的单个选项成功实现了此代码。我回收了这个项目的代码并对其进行了修改以适应多种选择,但到目前为止,我还没有成功运行正在运行的产品。JQuery如何基于选定的选项标签生成更多表单域

下面是我一直在用来说明我的观点的一些源代码。

jQuery脚本

$(document).ready(function(){ 
      $("#more_info_bus").hide(); 
      $("#more_info_bus").attr("disabled", "disabled"); 
      $("#more_info_train").hide(); 
      $("#more_info_train").attr("disabled", "disabled"); 
      $("#more_info_tram").hide(); 
      $("#more_info_tram").attr("disabled", "disabled"); 

      $("#transport_type").change(function(){ 
          var val = $(this).val; 
          $("#more_info_bus input").attr("enabled",(val=="Bus")?"":"enabled"); 
          (val=="Bus")?$("#more_info_bus").show():$("#more_info_bus").hide(); 

          $("#more_info_train input").attr("enabled",(val=="Train")?"":"enabled"); 
          (val=="Train")?$("#more_info_train").show():$("#more_info_train").hide(); 

          $("#more_info_tram input").attr("enabled",(val=="Tram")?"":"enabled"); 
          (val=="Tram")?$("#more_info_tram").show():$("#more_info_tram").hide(); 
        }); 

      }); 

HTML代码(缩短到两个div,而不是所有的选项,但你的想法

<label>Is the venue accessible by public transport via:</label> <br /> 
    <select name="transport_type" id="transport_type"> 
      <option disabled selected>Please select a transport type...</option> 
      <option value="Bus">Bus</option> 
      <option value="Train">Train</option> 
      <option value="Tram">Tram</option> 
      <option value="Taxi">Taxi</option> 
      <option value="Other">Other</option> 
    </select> <br /> <br /> 

    <!--HIDDEN DIVS THAT WILL APPEAR UPON SELECTION OF THE VALUES IN THE SELECT ABOVE --> 

    <div id="more_info_bus"> 
      <label>Bus: Frequency of service</label> 
        <input type="text" name="bus_freq" value="<?php echo $results['bus_freq']; ?>"/><br /> 

      <label>Bus: route numbers(s)</label> 
        <input type="text" name="bus_routes" value="<?php echo $results['bus_routes'];?>"/> <br /> 

      <label>Bus: Distance from stop to venue (in meters)</label> 
        <input type="text" name="bus_dist" value="<?php echo $results['bus_dist'];?>"/> <br /> 

      <label>Bus: How accessible is the route from stop to venue?</label> 
        <textarea cols="50" rows="2" name="bus_access"><?php echo $results['bus_access'];?></textarea> <br /> 
    </div> 

    <div id="more_info_train"> 
      <label>Train: Frequency of service</label> 
        <input type="text" name="train_freq" value="<?php echo $results['bus_freq']; ?>"/><br /> 

      <label>Train: route numbers(s)</label> 
        <input type="text" name="train_routes" value="<?php echo $results['bus_routes'];?>"/> <br /> 

      <label>Train: Distance from stop to venue (in meters)</label> 
        <input type="text" name="train_dist" value="<?php echo $results['bus_dist'];?>"/> <br /> 

      <label>Train: How accessible is the route from stop to venue?</label> 
        <textarea cols="50" rows="2" name="train_access"><?php echo $results['bus_access'];?></textarea> <br /> 
    </div> 

有谁知道为什么我的div部分留隐患?当用户选择每个div的相应值时不会出现。

+0

为什么在div上设置一个属性'disabled'?这不会做任何事情。如果你需要一个指标,你应该使用一个类。 – nirazul 2013-04-04 13:29:57

+0

我认为这是需要,然后'启用''输入'的div? – WebDevDanno 2013-04-04 13:30:46

+0

无论是你的'disabled'还是''enabled'语句都不需要。你可能会抹去这些线条。 – nirazul 2013-04-04 13:33:15

回答

3
var val = $(this).val; 

.val()是一个函数,所以现在typeof val === 'function'。 您必须使用:

var val = $(this).val(); 
+2

你也可以做'this.value'(没有jquery,在这种情况下不是函数) – maxedison 2013-04-04 13:28:16

+0

doh!非常感谢你,我是通过代码逻辑和任何东西来撕掉我的头发,这是一个语法错误。感觉现在发布愚蠢:') – WebDevDanno 2013-04-04 13:29:50

+0

学会使用console.log(),它会立即帮助你在这里...;) – 2013-04-04 13:30:27

相关问题