Как заморозить флажок после нажатия на флажок? Я пробую, но это не работает

#php #jquery #laravel

Вопрос:

Я пытаюсь заморозить флажок, но он не работает. Я упоминаю имя флажка как is_top_property. Пожалуйста, помогите мне. Вот код

 <div class="panel">
    <div class="panel-title"><strong>{{__("Top Property")}}</strong></div>
    <div class="panel-body">
        <div class="form-group">
            <input type="checkbox" name="is_top_property" onclick="check();" @if($row->is_top_property) checked @endif value="1"> {{__("Enable Top Property")}}
            <script>
            public function check(){
                if($("is_top_property").is(":checked")){
                    alert("Thanks for selecting");
                    $('is_top_property').attr('disabled',true);
                }
            }
            </script>                                        
               
        </div>
    </div>
</div>
 

Комментарии:

1. Добавьте класс во входные данные, например class="is_top_property , а затем добавьте отсутствующие . $("is_top_property") . Потому $("is_top_property") что это означает, что вы ищете <is_top_property> элемент, которого, конечно, не существует.

2. public function check(){ ?? Это JavaScript, а не JAVA. Удалить общественность

Ответ №1:

Вот как правильно закодировать ваш пример в jQuery:

  1. Используйте правильный селектор — здесь $("[name=is_top_property]") , но вы также можете добавить класс и использовать $(".is_top_property")
  2. не используйте встроенную обработку событий
  3. Нам нужен тайм-аут, чтобы установить флажок перед оповещением
  4. Я также добавил код для визуального отключения метки
 $(function() {
  $("[name=is_top_property]").on("change", function() {
    const checked = this.checked;
    if (checked) setTimeout(function() { alert("Thanks for selecting") }, 10); // give time to show the checkmark
    $(this)
      .prop('disabled', checked)
      .parent('label').toggleClass("disabled", checked)
  });
}); 
 .disabled {
  color: grey
} 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<label><input type="checkbox" name="is_top_property" value="1"> Enable Top Property</label> 

Ответ №2:

Функция Check() там не требуется, просто нужно найти флажок в элементе dom и отключить, когда он установлен.

 $(document).ready(function() {
  $("#is_top_property").click(function(){              
        if($(this).prop("checked") == true){
             $(this).attr('disabled',true);
        }
   });
 }