Search code examples
jqueryinputdisabled-inputisenabled

How i can toggle the input statue disabled


before i ask the question i searched on Stackoverflow about this and found out that i can disable or enable the input by prop or attr, but when i tried to implement this - like the following example- it does not want to toggle, am i missing something? thank you

$(function() {

  $('#submit').on('click', function() {
    $('body').prepend('<div class= "item" ></div>');
    if ($('.item').length > 0) {
      $('#search').removeAttr('disabled');
    }
    if ($('.item').length == 0) {
      $('#search').attr('disabled', 'disabled');
      //$('#search').prop('disabled', true);

    }

  });

  $('#reset').on('click', function() {
    $('.item').remove();
  })
});
button {
  display: inline-block
}

input {
  position: fixed;
  bottom: 0;
  right: 0
}

.item {
  width: 50px;
  height: 50px;
  background: orangered;
  margin: 5px
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type='search' id='search' disabled>
<button id='submit'>Submit</button>
<button id='reset'>Reset</button>


Solution

  • You dont need to check the lenght of generated divs, just play with disabled true or false depending on the click:

    $(function() {
    
      $("input").prop('disabled', true);
      $('#submit').on('click', function() {
            $('body').prepend('<div class= "item" ></div>');
            $("input").prop('disabled', false);
      });
    
      $('#reset').on('click', function() {
            $('.item').remove();
            $("input").prop('disabled', true);
      })
    });
    button {
      display: inline-block
    }
    
    input {
      position: fixed;
      bottom: 0;
      right: 0
    }
    
    .item {
      width: 50px;
      height: 50px;
      background: orangered;
      margin: 5px
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <input type='search' id='search'>
    <button id='submit'>Submit</button>
    <button id='reset'>Reset</button>