Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.12.2011, 13:35
Аватар для Tmin10
Кандидат Javascript-наук
Отправить личное сообщение для Tmin10 Посмотреть профиль Найти все сообщения от Tmin10
 
Регистрация: 13.05.2011
Сообщений: 104

Двойной вызов функции
Есть простой код:
$(".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 происходит ещё до смены выделения и после?
Ответить с цитированием
  #2 (permalink)  
Старый 08.12.2011, 13:40
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 12,633

Сообщение от Tmin10
При клике по радио кнопкам вызов upNumbers происходит 2 раза
Не верю. (с) Станиславский

<!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 раз...
Ответить с цитированием
  #3 (permalink)  
Старый 08.12.2011, 13:50
Аватар для Tmin10
Кандидат Javascript-наук
Отправить личное сообщение для Tmin10 Посмотреть профиль Найти все сообщения от Tmin10
 
Регистрация: 13.05.2011
Сообщений: 104

Как бы это показать...
Специально оставил в коде только
$(".rbutton").click(function() {
	alert('1');
};

Но я вижу это сообщение 2 раза...
Ответить с цитированием
  #4 (permalink)  
Старый 08.12.2011, 13:58
Аватар для Tmin10
Кандидат Javascript-наук
Отправить личное сообщение для Tmin10 Посмотреть профиль Найти все сообщения от Tmin10
 
Регистрация: 13.05.2011
Сообщений: 104

Вот, укоротил код, оставив тока боксы:
<!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>
Ответить с цитированием
  #5 (permalink)  
Старый 08.12.2011, 14:01
Аватар для Tmin10
Кандидат Javascript-наук
Отправить личное сообщение для Tmin10 Посмотреть профиль Найти все сообщения от Tmin10
 
Регистрация: 13.05.2011
Сообщений: 104

Понял в чём дело, но как это исправить, т.е. чтобы при клике по лабелу не активировалось 2 раза
Ответить с цитированием
  #6 (permalink)  
Старый 08.12.2011, 14:04
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 12,633

Сообщение от Tmin10
при клике по лабелу
Вот... Раскололся таки. Как вариант, замени лабель на спан...
Ответить с цитированием
  #7 (permalink)  
Старый 08.12.2011, 14:10
Аватар для Tmin10
Кандидат Javascript-наук
Отправить личное сообщение для Tmin10 Посмотреть профиль Найти все сообщения от Tmin10
 
Регистрация: 13.05.2011
Сообщений: 104

Но тогда чекбокс выделяться не будет, придётся ещё код и для него писать...
А это уже повторение функционала браузера...

Наверное надо не по клику, а по измениею состояния боксов...

Последний раз редактировалось Tmin10, 08.12.2011 в 14:12.
Ответить с цитированием
  #8 (permalink)  
Старый 08.12.2011, 14:13
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 12,633

Tmin10, выбирать тебе...
Ответить с цитированием
  #9 (permalink)  
Старый 08.12.2011, 14:19
Аватар для Tmin10
Кандидат Javascript-наук
Отправить личное сообщение для Tmin10 Посмотреть профиль Найти все сообщения от Tmin10
 
Регистрация: 13.05.2011
Сообщений: 104

Если вдруг кому-то поможет, то я сделал так:
$("[name=labeled]").change(function() { });

ksa, спасибо Вам!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вызов функции при смене url vvsh Events/DOM/Window 4 11.08.2011 19:01
Вызов функции TicTac Общие вопросы Javascript 2 24.01.2011 23:35
непонятный вызов функции hedgi Общие вопросы Javascript 2 05.08.2010 11:55
UI Dialog как победить двойной вызов??? xela1980 jQuery 3 19.12.2009 11:51
Вызов функции из другой функции.. ?? glutton Общие вопросы Javascript 3 21.08.2009 22:33