【问题标题】:hide and show input text based on drop down selection however但是,根据下拉选择隐藏和显示输入文本
【发布时间】:2019-07-27 07:00:50
【问题描述】:

根据下拉选择隐藏和显示输入文本,但是当我提交表单并且我没有完成表单验证时,“输入文本”不再显示。

我正在使用 jquery,我可以显示和隐藏,效果很好,但这部分让我很烦。

我的客户不会填写所有表单字段,因此当他们提交表单时,我希望他们根据他们的下拉选择查看输入文本,而不是输入文本丢失。

$(document).ready(function() {
    $('#shipping').change(function() {
        if ( $("#shipping").val ()  ==  "LA") 
        {                              
            $('#mydiv').show();
        }
        else
            $("#mydiv").hide();
    }); 
});

<select name="shipping" id="shipping">
 <option value="LA">LA</option>
 <option value="NYC">NYC</option>
</select>

<tr id="mydiv" style="display:none">
<td><input type="text" name="testing"></td>
</tr>


<tr>
<td><input type="text" name="testing2"></td>
</tr>



<tr>
<td><input type="text" name="testing3"></td>
</tr>

<input type="submit" value="Submit" />

【问题讨论】:

  • 请同时发布您的 html。
  • 最好分享一下这个!
  • 你的 mydiv 的样式默认为“display:none”.. 删除它&你可以看到它。
  • 但我只希望它在我从下拉列表中选择时显示?我确实删除了它,现在它没有做我想要的。基本上,我只想在从下拉列表中选择时显示输入文本,并将其留在屏幕上。
  • 如果这是你的实际 HTML,你应该关闭你的 input 标签。 (这不会解决你的问题,但这是另一个更正)

标签: javascript jquery


【解决方案1】:

您要验证的内容。

if textbox is hidden , it should be part of validation or not 
if that is part of validation use 
$('#id').prop("required", "true");
else
$('#id').removeAttr("required");

【讨论】:

    【解决方案2】:

    尝试使用一个类来隐藏它,而不是内联样式,

    <tr id="mydiv" class="hidden">
    <td><input type="text" name="testing"></td>
    </tr>
    

    CSS:.hidden{display:none;}

    然后做,

    $(document).ready(function() {
        $('#shipping').change(function() {
            if ( $("#shipping").val ()  ==  "LA") 
            {                              
                $('#mydiv').show();
            }
            else
                $("#mydiv").hide();
        }); 
    });
    

    (或) 当您想显示#mydiv 时,尝试删除“隐藏”类

    $(document).ready(function() {
        $('#shipping').change(function() {
            if ( $("#shipping").val ()  ==  "LA") 
            {                              
                $('#mydiv').removeClass('hidden');
            }
            else
                $("#mydiv").addClass('hidden');
        }); 
    });
    

    它会起作用的。!!

    【讨论】:

      【解决方案3】:

      在此处查看jsFiddle。有用。 我在您的 html 中没有看到 &lt;table&gt; 标记,这是一个问题。

      <select name="shipping" id="shipping">
          <option value="select">Select</option>
          <option value="LA">LA</option>
          <option value="NYC">NYC</option>
      </select>
      <table>
      <tr id="mydiv" style="display:none">
          <td>
              <input type="text" name="testing" value="show/hide"/>
          </td>
      </tr>
      <tr>
          <td>
              <input type="text" name="testing2"/>
          </td>
      </tr>
      <tr>
          <td>
              <input type="text" name="testing3"/>
          </td>
      </tr>
          </table>
      <input type="submit" value="Submit" />
      

      Javascript:

      $('#shipping').change(function () {
          if ($("#shipping").val() == "LA") {
              $('#mydiv').show();
          } else $("#mydiv").hide();
      });
      

      【讨论】:

      • 您是否添加了 包装标签,正如我在上面说明的那样?
      【解决方案4】:

      如果您希望在页面重新加载该信息时显示 div,您需要在页面加载时检查所选信息。 不要将默认显示设为无。加载页面时隐藏它。

       $(document).ready(function() {
       $("#mydiv").hide();
      
      var shipLocation = $("select#shipping").val();
      if ( shipLocation ==  "LA") 
          {                              
              $('#mydiv').show();
          }
      

      然后添加您的运输更改方式。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-04
        • 2020-12-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多