У меня есть html-ввод для дополнительного номера телефона, а также 2 радиовхода (Оставить сообщение, Dont Leave Message):
<input type="text" class="input-medium phoneNum2" name="secondaryPhone" id="secondaryPhone" onkeypress="toggleRadio(this)" onblur="toggleRadio(this)" placeholder="703-555-1010" value="<cfoutput>#session.secondaryPhone#</cfoutput>" />
Обратите внимание: у меня есть два события (удаление одного из них приводит к той же проблеме, поскольку оба помогают, но я предпочел бы иметь только 1 событие, если это необходимо).
Сценарий здесь: второй кто-то начинает вводить ввод, он проверяет, проверена ли одна из переключателей. Если нет, по умолчанию выберите "Да". Если по какой-то причине они удаляют номер телефона, поскольку они не хотят его выдавать, обе переключатели должны быть отменены (только там работает onblur). И если "Не оставлять сообщение" выбрано до того, как пользователь начинает вводить текст, он не должен иметь значение "да".
Вот JavaScript:
function toggleRadio(x) {
y = document.getElementById("contactSecondaryYes");
z = document.getElementById("contactSecondaryNo");
if (x.value.length < 1) {
y.checked = false;
z.checked = false;
}
if (x.value.length > 0 && !z.checked) y.checked = true;
}
Теперь для проблемы: параметр по умолчанию yes срабатывает только тогда, когда я набираю 2 символа вместо нужного 1 (почти как задержка в коде?). Если у меня есть "Нет" до того, как я начну печатать, по умолчанию будет да, когда я наберу 2 символа. Аналогично для обратного, ничто не onkeypress
, если в событии onkeypress
присутствует 0 символов, только когда вход теряет фокус во время события onblur
.
Я использую неправильные события? Есть ли логический недостаток? Нет сообщений об ошибках, и нет, я не могу использовать jQuery здесь, поэтому, пожалуйста, не давайте мне ответов jQuery или обычного "Почему нет jQuery?". (Я люблю jQuery, у меня просто есть причины, которые я не могу использовать).
Изменение: я также попытался заказать JavaScript, как это, безрезультатно.
function toggleRadio(x) {
y = document.getElementById("contactSecondaryYes");
z = document.getElementById("contactSecondaryNo");
if (x.value.length > 0 && !z.checked) y.checked = true;
if (x.value.length < 1) {
y.checked = false;
z.checked = false;
}
}
В принципе, я хочу знать, почему код действует, как есть задержка, и есть ли способ его исправить?
Вместо этого попробуйте использовать onkeyup:
onkeyup="toggleRadio(this)"