Событие переключения Jquery портится со значением флажка

Swing был разработан для использования с Key Bindings, которые могут делать то, что вы хотите. Я бы начал с проверки привязки клавиш . Не забудьте прочитать учебник Swing для получения полной информации.

Если это не поможет, см. Global Event Listeners для нескольких предложений.

42
задан John McCollum 10 December 2008 в 12:42
поделиться

8 ответов

Используйте change событие вместо toggle событие, как такой:

$('input#myId').change(function () {
    if ($(this).attr("checked")) {
        //do the stuff that you would do when 'checked'

        return;
    }
    //Here do the stuff you want to do when 'unchecked'
});
52
ответ дан Andreas Grech 10 December 2008 в 12:42
поделиться

При использовании change обработчик событий, предложенный Dreas Grech, является соответствующим, это не работает хорошо в IE 6 & 7, который не стреляет change событие, пока фокус не размывается (то есть, пока Вы не нажимаете вне области флажка). Как [1 111] говорит QuirksMode, "это - серьезная ошибка".

Вы могли бы хотеть использовать click обработчик событий, но это не будет работать с перемещением с помощью клавиатуры. Необходимо зарегистрироваться keyup обработчик также...

См. также этот связанный вопрос .

я еще не нашел хорошее решение перекрестного браузера, которое поддерживает оба щелчка мышью и активацию клавиатуры флажков (и не запускает слишком много событий).

<час>

Относительно Вашего решения для проверки, проверяется ли флажок или нет, вместо того, чтобы добавить Ваше собственное checked класс, можно использовать атрибут HTML checked:

$('input#myInput').change(function () {
    if ($(this).attr("checked")) {
        //do stuff if the checkbox is checked
    } else {
        //do stuff if the checkbox isn't checked
    }
});

Любой браузер устанавливает checked атрибут input элемент к значению "checked", если флажок проверяется и устанавливает его на [1 110] (или удаляет атрибут), если флажок не проверяется.

18
ответ дан Community 10 December 2008 в 12:42
поделиться
$('input#myId').toggle(
  function(e){
    e.preventDefault();
    //do stuff      
    $(this).attr('checked', 'true');
  },
  function(e){
    e.preventDefault();
    //do other stuff        
    $(this).attr('checked', 'false');
  }
);
1
ответ дан adam 10 December 2008 в 12:42
поделиться

Я сделал похожий подход, но просто использовал проверенный атрибут такие как

 //toggles checkbox on/off
    $("input:checkbox").change(
        function(){
           if(!this.checked){
             this.checked=true;
           }
           else{
             this.checked=false;
           }
         }
       );
 //end toggle
0
ответ дан 26 November 2019 в 23:42
поделиться

Попробуйте использовать функцию, отличную от jquery:

function chkboxToggle() {
  if ($('input#chkbox').attr('checked'))
    // do something
  else
    // do something else
}

затем в вашей форме:

<input id="chkbox" type="checkbox" onclick="chkboxToggle()" />
0
ответ дан 26 November 2019 в 23:42
поделиться

Это ответ MorningZ (я нашел его здесь ), который имеет смысл:

Часть вам не хватает того, что "флажок" - это объект jQuery, а не checkbox DOM object

поэтому:

checkbox.checked наверняка вызовет ошибку, потому что нет свойства .checked jQuery объект

так:

флажок [0] .checked будет работать, поскольку первый элемент в массиве jQuery - это объект DOM

Итак, в вашей функции change () вы можете использовать

$(this)[0].checked
2
ответ дан 26 November 2019 в 23:42
поделиться

this worked for me............ check it

$(":checkbox").click(function(){
if($(this).attr("id").split("chk_all")[1])
 {
  var ty  = "sel"+$(this).attr("id").split("chk_all")[1]+"[]";
  if($(this).attr("checked"))
   {
    $('input[name="'+ty+'"]').attr("checked", "checked");
   }
  else
   {
    $('input[name="'+ty+'"]').removeAttr("checked");
   }
 }
})
1
ответ дан 26 November 2019 в 23:42
поделиться

Попробуйте:

$(":checkbox").click(function(){
  if($(this).attr("checked"))
   {
    $('input[name="name[]"]').attr("checked", "checked");
   }
  else
   {
    $('input[name="name[]"]').removeAttr("checked");
   }
})
0
ответ дан 26 November 2019 в 23:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: