jQuery:当没有选择选择字段选项时隐藏元素(多个字段)

时间:2017-07-19 13:02:05

标签: jquery drop-down-menu show-hide

对于搜索表单,我只想在选择了四个可用选项中的至少一个选项时显示重置按钮,并在所有选择字段重置后隐藏它。 通过以下jQuery,我可以同时解决这些问题,当然这对于显示按钮很方便,但是当我在多个选择字段上选择了选项时,例如选择了一种颜色'和一个'尺寸',一旦我清除了两个选择选项之一,重置按钮就会消失。

如何让jQuery确保所有选择都已重置以隐藏重置元素?

当前代码:

jQuery('#my_searchform select').change(function() {
    if(jQuery(this).val()) {
        jQuery('.reset').show();
    } else {
        jQuery('.reset').hide();
    }
});

6 个答案:

答案 0 :(得分:2)

您还需要检查其他选项。

SELECT DeviceIP
  ,ServiceStatus
  ,ReportedErrors
  ,Max(SwVersion) as MaxSwVersion
FROM PollingStatus p
      INNER JOIN DeviceProperties d
            ON p.DeviceIP = d.DeviceIP
GROUP BY DeviceIP, ServiceStatus, ReportedErrors

select1,select2,select3,select4是选择ID。您也可以为它们分配一个公共类,并检查这些选择(带有类)以供决策。

答案 1 :(得分:1)

你可以试试这个。

$('#my_searchform select').change(function() {
    var isAnySelected=false;
    $('#my_searchform select').each(function(){
      if($(this).val()!=""){
        isAnySelected=true;        
      }
    });

    if(isAnySelected) {
        $('.reset').show();
    } else {
        $('.reset').hide();
    }
});

$(".reset").click(function(){
  $('#my_searchform select').each(function(){
      $(this).val("");
  });
  $('.reset').hide();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="my_searchform">
  <input type="button" value="Reset Form" class="reset" style="display:none;" />
  <br/><br/>

  <label>Select1</label>
  <select>
    <option value=""> </option>
    <option value="1">1</option>
  </select>
  <br/>
   <label>Select2</label>
  <select>
    <option value=""> </option>
    <option value="1">1</option>
  </select>
  <br/>
   <label>Select3</label>
  <select>
    <option value=""> </option>
    <option value="1">1</option>
  </select>
</form>

答案 2 :(得分:0)

您可以使用解决方案https://jsfiddle.net/ngqrw1cz/2/

&#13;
&#13;
$('#my_searchform select').change(function() {
		var flag = false;
    $('select').each(function(){
    	if($(this).val() != ""){
      	flag = true
      }
    });

    if(flag){
    	$('.reset').show();
    }else{
    	$('.reset').hide();
    }
});
&#13;
.reset {
  display: none;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="my_searchform">
  <select>
    <option value="">Select one option</option>
    <option value="test1">Test 1</option>
    <option value="test2">Test 2</option>
  </select>
  <select>
    <option value="">Select one option</option>
    <option value="test3">Test 3</option>
    <option value="test4">Test 4</option>
  </select>
  <select>
    <option value="">Select one option</option>
    <option value="test5">Test 5</option>
    <option value="test6">Test 6</option>
    <option value="test9">Test 9</option>
  </select>
</form>


<button type="sbumit" class="reset">Reset</button>
&#13;
&#13;
&#13;

答案 3 :(得分:0)

我只是检查是否使用过滤器

填写了任何输入
    jQuery('#my_searchform select').change(function() {
        if(jQuery(this).val()) {
            jQuery('.reset').show();
        } else {
            if(jQuery('#my_searchform select').filter(function(){return !this.value}).length === 0) {
jQuery('.reset').hide();
}
        }
        });

答案 4 :(得分:0)

为了解决您的问题(例如:显示按钮,如果任何选择具有选定选项,并且仅在所有选择的选项都已手动重置时隐藏),您可以测试所选选项的数量,如下面的代码段所示:

$('select').on('change', function(e) {
    $('.reset').toggle($('select option[value!=""]:selected').length > 0);
});

$('button.reset').on('click', function(e) {
    // on reset action reset and trigger the change event
    $('select').val('').trigger('change');
});
.reset {
    display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>


<form>
    Select a colour:
    <select>
        <option value=""></option>
        <option value="red">red</option>
        <option value="yellow">yellow</option>
        <option value="black">black</option>
        <option value="white">white</option>
    </select>

    Select a size:
    <select>
        <option value=""></option>
        <option value="1">1</option>
        <option value="2">2</option>
        <option value="3">3</option>
        <option value="4">4</option>
    </select>
    <br>
    <button type="reset" class="reset" value="Reset">Reset</button>
</form>

答案 5 :(得分:0)

希望这有帮助 -

$(document).ready(function() {
  var resetBtn = $("#resetBtn");
  resetBtn.hide();

  function validateSelects(){
    var isSelected = false;
    $.each($("select"),function()
    {
         if( $(this).val() !== ""){  isSelected=true; console.log(isSelected);}
    });
    return(isSelected);
  }

  // For the functionality.
  $("#myform select").on("change",function(){
    if(validateSelects()) {
      console.log("if " + validateSelects());
      resetBtn.show();
    }else {
      console.log("else " + validateSelects());

      resetBtn.hide();
    }
  });

});