禁用隐藏div中的必需标记

时间:2016-07-04 06:31:20

标签: javascript html

我的联系表单有一些div框,隐藏或显示下拉列表。我在这个div中使用了必需的标记。问题是当其中一个需要的标签在隐藏的div中时我无法提交表格我该怎么办?



$(document).ready(function() {
  $("#Color").change(function() {
    $(this).find("option:selected").each(function() {
      if ($(this).attr("value") == "redd") {
        $(".box").not(".redd").hide();
        $(".redd").show();
      } else if ($(this).attr("value") == "greenn") {
        $(".box").not(".greenn").hide();
        $(".greenn").show();
      } else {
        $(".box").hide();
      }
    });
  }).change();

  $("#ddColor").change(function() {
    $(this).find("option:selected").each(function() {
      if ($(this).attr("value") == "red") {
        $(".inner-box").not(".red").hide();
        $(".red").show();
      } else if ($(this).attr("value") == "green") {
        $(".inner-box").not(".green").hide();
        $(".green").show();
      } else {
        $(".inner-box").hide();
      }
    });
  }).change();
});

.inner-box {
  border: 2px solid;
  height: 30px;
  background-color: yellow;
}
.green {
  background-color: green;
}
.red {
  background-color: red;
}

<div>
  <fieldset>
    <p dir="rtl">
      <label>case1</label>
      <select id="Color" required="required">
        <option>please select</option>
        <option value="redd">home
          <option>
            <option value="greenn">laptop</option>
      </select>
    </p>
  </fieldset>
</div>
<div class="redd box">
  <div>
    <fieldset>
      <p dir="rtl">
        <label>case2</label>
        <select id="ddColor" required="required">
          <option>please select</option>
          <option value="red">sell
            <option>
              <option value="green">rent</option>
        </select>
      </p>
    </fieldset>
  </div>
  <div class="red inner-box">
    <input dir="rtl" type="text" name="pricerange" required />
  </div>
  <div class="green inner-box">
    <input dir="rtl" type="text" name="rentrange" required/>
  </div>

</div>
<div class="greenn box">
  <input dir="rtl" type="text" name="ramrange" required/>
</div>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:0)

要删除attr,您可以使用:

$('#id').removeAttr('required');​​​​​

答案 1 :(得分:0)

您需要在隐藏时将sendto设置为required,并在显示时再次设置false。如果显示这些div中的{{1>} 全部,则很容易:

true div为例:

隐藏:

inputs

显示:

.redd

如果只需要部分,您就会想要记住他们的旧设置,然后重新应用它:

隐藏:

$(".redd").hide().find("input").prop("required", false);

显示:

$(".redd").show().find("input").prop("required", true);

如果您从标记中隐藏了一些内容,那么您应该在执行任何$(".redd").hide().find("input").each(function() { var $input = $(this); $input.data("was-required", $input.prop("required")); $input("required", false); }); 操作之前执行此操作:

$(".redd").show().find("input").each(function() {
    var $input = $(this);
    $input.prop("required", $input.data("was-required"));
});

...初始化旗帜。如果他们都开始展示,你不需要,因为&#34;隐藏&#34;上面的行动将会。