2011-12-11 3 views
1

У меня есть этот код, и он отлично работает, но проблема в том, что этот флажок не удаляется при повторном нажатии на него, он удаляется только при нажатии на span.removePortfolio. Благодаря!Флажок не снят с отметки

<input type="checkbox" name="portfolio"/> 
<div> 
    Has Portfolio <span class="removePortfolio">X</span> 
</div> 

$("input[name=portfolio]").change(function() { 
    loadResults(); 
    checkPortStatus(); 
});  

$('span.removePortfolio').live("click", function() { 
    $("input[name=portfolio]").removeAttr("checked"); 
    $('#portfolioRemove').hide(); 
}); 

var portChecked = false; 
function checkPortStatus() { 
    if((portChecked) == true) { 
     $("input[name=portfolio]").removeAttr("checked"); 
    } 
} 

function loadResults() { 
    if($("input[name=portfolio]").attr("checked", "checked")) { 
     portChecked = true; 
    } 

} 

Я просто нужно флажок, чтобы проверить, когда пользователь нажимает на нее, бесконтрольно, когда они нажимают снова, и остановить, если он был установлен, и пользователь нажимает span.removePortfolio.

+0

Непонятно, какое поведение вы действительно хотите. Кроме того, $ ('# portfolioRemove'). Hide() ссылается на идентификатор элемента, который не существует в коде, который вы указали. – smendola

ответ

0

Internet Explorer не запускает событие «изменения» для флажков, пока элемент не теряет фокус. Вместо этого используйте «щелчок».

Кроме того, манипулирование «проверенным» свойством, как это, на самом деле не очень хорошая идея. Используйте новый (начиная с 1.6) ".prop()" метод:

$('input.whatever').prop('checked', true); // make the element be checked 
$('input.whatever').prop('checked', false); // make it be un-checked 

и это, вероятно, даже быстрее, чтобы сделать это (если есть только один флажок настроен таргетинг селектор JQuery):

$('input.whatever')[0].checked = false; // or true 

редактировать также, ваш код, как написано, кажется, хочет, чтобы заставить этот флажок, чтобы быть выключен, как только он нажал:

  1. Установите флажок, и это (на мгновение) проверил
  2. Обработчик «change» вызывает «loadResults()», который устанавливает этот флаг («portChecked») в true.
  3. Теперь функция «checkPortStatus()» запускается, и она немедленно отменяет флажок.
+0

ОК интересный, но у меня нет этой проблемы с IE ... даже не проверил IE еще ... используя FF – webwrks

+0

Хорошо, хорошо, мой ответ - свойство «checked» - это свойство ** ** а не атрибутом, когда вы имеете дело с DOM. – Pointy

Смежные вопросы