2013-11-26 2 views
0

Я могу разобраться в этой, казалось бы, простой проблеме. У меня есть флажок и связанный с ним onclick внутри моей JSP-страницы. Когда я нажимаю флажок, мне нужно проверить внутри этой функции onclick, проверяется или не проверяется, какие действия нужно предпринять. Тем не менее, он всегда проверяется! Я не знаю почему. Его почти как действие щелчка завершается и отметит его, прежде чем он попадет в эту функцию. Однако, если я делаю простую страницу примеров HTML, она отлично работает и возвращает правильное значение для .checked. Я попытался удалить «это» и просто звоню флажок по идентификатору из OnClick с теми же результатами Вот установка:checkbox.checked всегда возвращает true внутри функции onclick

<label><input type="checkbox" onclick="selectEntireRange(this);"/> Select ALL Ranges</label> 

Вот JS:

function selectEntireRange(checkElement) 
{ 
    // if checked - remove check and display table rows normally 
    if(checkElement.checked) 
    { 
    //ALWAYS EXECUTES HERE! 
    checkElement.checked = false; 
    greyoutAllTableRows(false); 
    } 
    // if unchecked - mark 'checked' and grey out all table rows 
    else 
    { 
    checkElement.checked = true; 
    setAllCheckBoxes(false); 
    var selectedRangeField = document.getElementById('effRange'); 
    selectedRangeField.value = ''; 
    greyoutAllTableRows(true); 
    } 
} 

любая помощь будет здорово! Благодаря!

P.S. Я не могу использовать jQuery для этого!

+1

Пробовал событие onchange вместо – adeneo

+0

Привет, да, но с IE onchange только триггеры, когда флажок теряет фокус, чего я не хочу. –

+0

Попробуйте первый ответ в этом посте, я думаю, это поможет. http://stackoverflow.com/questions/10459021/how-to-apply-checkbox-with-functions-in-javascript – Susie

ответ

0

Как насчет

onclick="selectEntireRange(this.checked)" 

измените функцию, чтобы спросить, если его истинным или ложным или 0 или 1, или какие-либо значения по умолчанию проверки являются. не уверен.

+0

умный подход! К сожалению, всегда проверялся также :( –

0

Проблема возникает из-за вашей настройки checkElement.checked = false; внутри if/else блока. Комментарий \ Удалите эту строку, и она будет работать. Поскольку при щелчке вы устанавливаете его обратно на false, флажок не входит в статус проверки и каждый раз, когда пользователь нажимает на него, он не снимается из-за строки checkElement.checked = false;.

+0

Но неправильно сообщать о статусе «проверено» еще до этой строки. В любом случае, я просто запустил его снова, удалив эту строку ... все еще неправильно. Спасибо за предложение! –

+0

Позвольте мне узнайте браузер и версию, если вы не найдете его работающим над этим [jsfiddle] (http://jsfiddle.net/nkanand4/RN68K/). –

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