Двойной вызов функции
Есть простой код:
$(".rbutton").click(function() { upNumbers(); }); function upNumbers () { $('#numbers').html("Всего в наличии: <img src='img/ajax-loader1.gif' alt='loading...'/>"); var mtype = DoIt('labeled'); $.post('test.php', {act:'ajax_num', type:mtype}, function(text){ $('#numbers').html('Всего в наличии: <b>'+text+'</b>') }, 'text'); }; При клике по радио кнопкам вызов upNumbers происходит 2 раза, со старым значением и с новым, в следствии чего отображаются данные для старого или нового запроса с 50% вероятностью. Функция DoIt просто возвращает номер выделенной радиокнопки в группе. Почему вызов функции click происходит ещё до смены выделения и после? |
Цитата:
<!DOCTYPE html> <html> <head> <script src="http://code.jquery.com/jquery-latest.js"></script> <!-- <link rel="stylesheet" type="text/css" href="tmp.css" /> --> <style type="text/css"> </style> <script type="text/javascript"> $(document).ready(function(){ $(':radio').click(function(){ alert('Test...'); }); }); </script> </head> <body> <input type='radio' name='test' /> <input type='radio' name='test' /> <input type='radio' name='test' /> </body> </html> Вызов происходит только 1 раз... |
Как бы это показать...
Специально оставил в коде только $(".rbutton").click(function() { alert('1'); }; Но я вижу это сообщение 2 раза... |
Вот, укоротил код, оставив тока боксы:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script> <script type="text/javascript"> $(document).ready(function(){ $(".rbutton").click(function() { alert('1'); }); }); </script> </head> <body> <p class="rbutton"><input type="radio" name="labeled" value="1" id="labeled_1" checked="checked"><label for="labeled_1">1</label></p> <p class="rbutton"><input type="radio" name="labeled" value="2" id="labeled_2"><label for="labeled_2">2</label></p> <!--<p class='rbutton'><input type='radio' name='labeled' value='3' id='labeled_3' /><label for='labeled_3'>3</label></p> --><p class="rbutton"><input type="radio" name="labeled" value="4" id="labeled_4"><label for="labeled_4">4</label></p> <p class="rbutton"><input type="radio" name="labeled" value="5" id="labeled_5"><label for="labeled_5">5</label></p> <p class="rbutton"><input type="radio" name="labeled" value="6" id="labeled_6"><label for="labeled_6">6</label></p> <p class="rbutton"><input type="radio" name="labeled" value="7" id="labeled_7"><label for="labeled_7">7</label></p> </body> </html> |
Понял в чём дело, но как это исправить, т.е. чтобы при клике по лабелу не активировалось 2 раза
|
Цитата:
|
Но тогда чекбокс выделяться не будет, придётся ещё код и для него писать...
А это уже повторение функционала браузера... Наверное надо не по клику, а по измениею состояния боксов... |
Tmin10, выбирать тебе... :)
|
Если вдруг кому-то поможет, то я сделал так:
$("[name=labeled]").change(function() { }); ksa, спасибо Вам! |
Часовой пояс GMT +3, время: 08:33. |