Как сделать выбор из радиокнопок?
Создала форму сделала обработчик и при выборе городов ничего не происходит (так и должно быть), если нажать другой город то создастся поле, где предложат пользователю назвать свой город. Я сделала форму, и несколько дополнительных полей только вот при щелчке на форму и полям срабатывает обработчик onclick. Как сделать обработчик только, для radio кнопок?
Вот весь код: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> <meta name="description" content="" /> <meta name="keywords" content="" /> <script src="http://code.jquery.com/jquery-1.9.1.js"></script> <script type="text/javascript"> $(document).ready(function(e){ document.mainForm.onclick = function(){ var radVal = document.mainForm.city.value; var text = ""; if(radVal == "-1") { text = "Другой город"; alert(text); document.getElementById("pole").innerHTML = '<input type="text" name="other_city">'; } else { text = "Город из списка"; alert(text); document.getElementById("pole").innerHTML = ""; } } }); </script> </head> <body> <p> <form id="mainForm" name="mainForm"> <input type="text" name="test" value=""><br> <input type="radio" checked="checked" name="city" value="1"> <label> Москва </label> <input type="radio" name="city" value="2"> <label> Воронеж </label> <input type="radio" name="city" value="3"> <label> Новгород </label> <input type="radio" name="city" value="4"> <label> Волгоград </label> <input type="radio" name="city" value="-1"> <label> Другой </label> <div id="pole"></div> </p> </form> </body> </html> |
Katy93,
<!DOCTYPE html> <html lang="ru"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title></title> <meta name="description" content=""> <meta name="keywords" content=""> <script type="text/javascript"> document.addEventListener( "DOMContentLoaded" , function() { const on = (parent, event, selector, fn) => parent.addEventListener(event, ({target}) => { if(target = target.closest(selector)) fn(target) }) const fn = ({value}) => { const html = value == -1 ? '<input type="text" name="other_city">' : ''; const text = value == -1 ? 'Другой город' : 'Город из списка'; document.getElementById("pole").innerHTML = html; alert(text); }; on(document.querySelector("#mainForm"), "click", '[name="city"]', fn); }); </script> </head> <body> <form id="mainForm" name="mainForm"> <input type="text" name="test" value=""><br> <label><input type="radio" checked="checked" class="city_check" name="city" id="city1" value="1"> Москва</label> <label><input type="radio" class="city_check" name="city" id="city2" value="2"> Воронеж</label> <label><input type="radio" class="city_check" name="city" id="city3" value="3"> Новгород</label> <label><input type="radio" class="city_check" name="city" id="city4" value="4"> Волгоград</label> <label><input type="radio" class="city_check" name="city" id="city_1" value="-1"> Другой</label> <div id="pole"></div> </form> </body> </html> |
Мне нужно обязательно в
$(document).ready(function(e){ }); Именно там я храню весь код. Но там почему-то он не работает. |
Katy93,
возьмите строки 10 и 19. |
Katy93,
это document.addEventListener( "DOMContentLoaded" , function() { и это $(document).ready(function(e){ одно и тоже |
Теперь всё нормально работает, спасибо. Я не знала, что это одно и тоже. Честно говоря я вообще про "DOMContentLoaded" до сегодняшнего дня не слышала.
|
Цитата:
|
Часовой пояс GMT +3, время: 15:23. |