Нажмите событие, если элемент отмечен и перезагрузите страницу - PullRequest
0 голосов
/ 15 февраля 2019

Я хотел бы reload.location событие клика, только если установлен флажок.Мне кажется, это базовые условия, но это не работает.Возможно, нужен другой подход?Что я понял, так это то, что когда флажок установлен, html не изменяется в элементе <input type="checkbox">.Может быть, в этом причина или комбинация этих условий невозможна?Оператор else - это обратный вызов на предыдущую страницу пользовательского интерфейса.В приведенной ниже попытке он пропускает оператор if.

Моя попытка:

$(document.body).on("click", "#button", function(){
        if (document.getElementById('checkbox').checked) {

                location.reload(true);

        } else {

        return_to_page( this.dataset.return )

        }
    });

Выше работает, однако он игнорируется из-за отсутствующего warnDefault:

$(document.body).on("click", "#button", function(e){
    e.preventDefault();

    //etc

});

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019
$('#button').click( function() {
    if( $("input[id='checkbox']:checked") ) {
        location.reload(true);
    }
});

альтернатива

$('#button').click( function() {
    if( $('#checkbox').is(':checked') ) {
        location.reload(true);
    }
});

Все в одной тарелке методы:

$('#checkbox').is(":checked")

$('#checkbox').prop('checked')

$('#checkbox')[0].checked

$('#checkbox').get(0).checked
0 голосов
/ 15 февраля 2019

checked не является свойством объекта jQuery.Вместо этого вы можете использовать prop(), чтобы получить свойство:

$('#button').click( function() {
  if ($('#checkbox').prop('checked')) {
    location.reload(true);
  }

  // alternative #1 - use the 'checked' property of the Element in the jQuery object:
  if ($('#checkbox')[0].checked) {
    location.reload(true);
  }

  // alternative #2 - use the 'checked' property of the Element outside of jQuery:
  if (document.getElementById('checkbox').checked) {
    location.reload(true);
  }
});

Вот рабочий пример:

$('#button').click(function() {
  if ($('#checkbox').prop('checked')) {
    // location.reload(true);
    console.log('Reload would happen now...');
  } else {
    console.log('Staying on the current page');
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<label>
  <input type="checkbox" id="checkbox" /> 
  Reload?
</label>
<button id="button">Go</button>
...