EDIT:
Ваш код не работает, потому что функция showMoreInfo(x)
предполагает, что параметр x будет ссылкой на одну или другую из переключателей, но затем событие onchange / onkeyup / любого ввода вашего текста вызывает ту же функцию и передает ее ссылка на себя - вот почему она работает только при нажатии переключателей. Вместо этого вы можете попробовать что-то вроде следующего, позволяя функции обрабатывать свои собственные ссылки на ваши HTML-элементы вместо того, чтобы передавать их:
function showMoreInfo() {
var bond = document.getElementById('f-applicant-bondamount');
var adminRadio = document.getElementById('f-applicant-is_0');
// var theOtherRadioIfYouNeedIt = document.getElementById('f-applicant-is_1');
var y = bond.value;
if (y > 100000 && adminRadio.checked) {
document.getElementById('f-container-applicant-moreinfo').style.display = 'block';
}
else if (y <= 100000 && adminRadio.checked) {
document.getElementById('f-container-applicant-moreinfo').style.display = 'none';
}
}
Мое первоначальное мнение о неадекватности событий на клавиатуре все еще остается верным.
Мой оригинальный ответ:
Как сказал Уомблтон, onchange
происходит только тогда, когда фокус покидает поле - вот почему в вашем примере нажатие переключателя заставляет onchange
произойти. Итак, как уже было сказано, вы можете использовать onkeyup
вместо onchange
.
Но , помните, что есть несколько способов, которыми пользователь может изменить значение на входе без использования клавиатуры (таким образом, нет onkeyup
), например, перетаскивание на вход ( перетаскивание изменит фокус, но если вы больше не используете onchange
...). Или щелкните правой кнопкой мыши контекстное меню, вставьте, вырезайте или удалите. Я не уверен, каков простейший способ их решения (мне не нужно беспокоиться, поскольку мне не нравится, когда что-то меняется на странице, когда пользователь вводит данные в поле, а мне обычно нужно только onkeyup
, чтобы проверить специально для клавиши ввода), но есть события onpaste и ondrop, которые вы можете посмотреть.