代码之家  ›  专栏  ›  技术社区  ›  TheOrdinaryGeek

引导切换隐藏的Div和输入值

  •  1
  • TheOrdinaryGeek  · 技术社区  · 6 年前

    我在用 Bootstrap Toggle

    在div中有输入,如果有的话 任何

    • 如果用户选择 ok ,我想清除输入值并隐藏div,即将所有内容重置为默认值。
    • 如果用户选择 cancel 我什么都不想做,即保持div打开并保留当前的输入值

    我好像不能让它工作。

    我的代码在a下面 fiddle .

    <input type="checkbox" value='1' name="test" id="test">
    <hr>
    <div id="advanced">
      <form>
        <input type="text" name="one">
        <input type="text" name="two">
      </form>
    </div>
    

    JQuery查询

    function checkValues() {
      if ($('#advanced').find('input:text').val() !== '') {
        clearInput();
      }
    }
    
    function clearInput() {
      var txt;
      var r = confirm("You sure you want to remove these values?");
      if (r == true) {
        resetValues();
      } else {
        console.log('keep values and box open');
      }
    }
    
    function resetValues() {
      $('#advanced').find('input:text').val('');
    }
    
    $(function() {
      $('#test').bootstrapToggle({
        on: 'Hide',
        off: 'Show',
        onstyle: 'danger'
      });
      $("#advanced").hide();
      $('#test').change(function() {
        if ($(this).prop('checked') == true) {
          checkValues();
          $("#advanced").show(500);
        }
        if ($(this).prop('checked') == false) {
          checkValues();
          $("#advanced").hide(500);
        }
    
      });
    })
    

    感谢您的帮助。

    3 回复  |  直到 6 年前
        1
  •  0
  •   95faf8e76605e973    6 年前

    您可以设置某种标志,告诉系统只有在确认对话框不返回false时才删除这些值

        function checkValues() {
          if ($('#advanced').find('input:text').val() !== '') {
            var state = clearInput();
            return state;
          }
        }
    
        function clearInput() {
          var txt;
          var r = confirm("You sure you want to remove these values?");
          if (r === true) {
            resetValues();
          } else {
            return false;
          }
        }
    
        function resetValues() {
          $('#advanced').find('input:text').val('');
        }
    
        $(function() {
          $('#test').bootstrapToggle({
            on: 'Hide',
            off: 'Show',
            onstyle: 'danger'
          });
          $("#advanced").hide();
          $('#test').change(function() {
            if ($(this).prop('checked') == true) {
              checkValues();
              $("#advanced").show(500);
            }
            if ($(this).prop('checked') == false) {
              state = checkValues();
              if(state != false){
                  $("#advanced").hide(500);
              } else {
                  $("#test").data('bs.toggle').on(true);
                  // let the checkbox remain toggled
              }
              
            }
    
          });
        })
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <link href="https://gitcdn.github.io/bootstrap-toggle/2.2.2/css/bootstrap-toggle.min.css" rel="stylesheet">
    <script src="https://gitcdn.github.io/bootstrap-toggle/2.2.2/js/bootstrap-toggle.min.js"></script>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
    <input type="checkbox" value='1' name="test" id="test">
    <hr>
    <div id="advanced">
      <form>
        <input type="text" name="one">
        <input type="text" name="two">
      </form>
    </div>
        2
  •  0
  •   satheesh    6 年前

        function checkValues() {
      if ($('#advanced').find('input:text').val() !== '') {
        clearInput();
      } else {
        $("#advanced").hide();
      }
    }
    
    function clearInput() {
      var txt;
      var r = confirm("You sure you want to remove these values?");
      if (r == true) {
        resetValues();
        $("#advanced").hide(500);
      } else {
        $('#test').bootstrapToggle('on');
        console.log('keep values and box open');
      }
    }
    
    function resetValues() {
      $('#advanced').find('input:text').val('');
    }
    
    $(function() {
      $('#test').bootstrapToggle({
        on: 'Hide',
        off: 'Show',
        onstyle: 'danger'
      });
      $("#advanced").hide();
      $('#test').change(function() {
        if ($(this).prop('checked') == true) {
          $("#advanced").show(500);
        }
        if ($(this).prop('checked') == false) {
          checkValues();
        }
    
      });
    })
    

    这是链接 Link

        3
  •  0
  •   Shiladitya    6 年前

    https://jsfiddle.net/Lg9p417t/64/

    $(function() {
      $('#test').bootstrapToggle({
        on: 'Hide',
        off: 'Show',
        onstyle: 'danger'
      });
      $("#advanced").hide();
      $('#test').change(function() {
        if ($(this).prop('checked') == true) {
          if ($('#advanced').find('input:text').val() === '') {
            $('#advanced').find('input:text').val('');
          }
          $("#advanced").show(500);
        }
        if ($(this).prop('checked') == false) {
          if ($('#advanced').find('input:text').val() !== '') {
            var txt;
            var r = confirm("You sure you want to remove these values?");
            if (r == true) {
              $("#advanced").hide(500);
              $('#advanced').find('input:text').val('');
            } else {
              $('#test').bootstrapToggle('on');
            }
          } else {
            $("#advanced").hide(500);
          }
        }
      });
    })
    <link href="https://gitcdn.github.io/bootstrap-toggle/2.2.2/css/bootstrap2-toggle.min.css" rel="stylesheet"/>
    <link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.0.4/css/bootstrap.css" rel="stylesheet"/>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="https://gitcdn.github.io/bootstrap-toggle/2.2.2/js/bootstrap-toggle.min.js"></script>
    <script src="http://bootstrapdocs.com/v2.0.4/docs/assets/js/bootstrap-button.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.0.4/bootstrap.min.js"></script>
    <script src="https://rawgit.com/eu81273/jsfiddle-console/master/console.js"></script>
    
    <input type="checkbox" value='1' name="test" id="test">
    <hr>
    <div id="advanced">
      <form>
        <input type="text" name="one">
        <input type="text" name="two">
      </form>
    </div>