Показать сообщение отдельно
  #6 (permalink)  
Старый 16.08.2012, 11:49
Интересующийся
Отправить личное сообщение для project1 Посмотреть профиль Найти все сообщения от project1
 
Регистрация: 06.10.2011
Сообщений: 24

При клике по четвёртому радиобаттону из 4-х, вызывается функция, где сразу проверяется список точек самовывоза select.
<!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">
<head>
    <script src="http://code.jquery.com/jquery-latest.js"></script>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
    <title>Пример</title>
</head>
<body>
<input id="payType1" type="radio" checked="true" name="payType" value="1" onclick="checkAvailPups()" />
<label for="payType1">наличными</label>
<input id="payType2" type="radio" name="payType" value="2" onclick="checkAvailPups()" />
<label for="payType2">запросить счет</label>
<input id="payType3" type="radio" name="payType" value="3" onclick="checkAvailPups()" />
<label for="payType3">банковская карта</label>
<input id="payType4" type="radio" name="payType" value="4" onclick="checkAvailPups()" />
<label for="payType4">в кредит<sup style="color:red;">new</sup></label><br /><br />
<select onchange="changedPup(this);" id="selfDeliveryPup" name="selfDeliveryPup">
  <option value="ptoptik" kbtpup="0" urpup="1" credit="0" visa="0" disabled="">Магазин на ул. Оптиков</option>
  <option value="spmbudapes" kbtpup="0" urpup="0" credit="0" visa="0">Будапештская</option>
  <option value="spmgrazhd" kbtpup="0" urpup="1" credit="0" visa="0">Гражданский проспект</option>
  <option value="spmdesant" kbtpup="0" urpup="0" credit="0" visa="0">Десантников</option>
  <option value="spmdunay" kbtpup="0" urpup="1" credit="0" visa="0">Дунайский проспект</option>
  <option value="spmdybenko" kbtpup="0" urpup="1" credit="0" visa="0">Дыбенко</option>
</select>
<script type="text/javascript">
function checkAvailPups() {
	//список точек самовывоза (<select>)
	var select = $('#selfDeliveryPup'), nextAvail;
	//выбранный option
	var currentPUP = select.children(':selected');
	 //если выбран 4-й радиобаттон и текущий option имеет атрибут credit != 1
	if ($('#payType4').is(':checked') && currentPUP.attr('credit') != 1) {
		//нахожу следующий option из списка, где аттрибут credit != 0 чтобы его сделать выбранным
		nextAvail = select.children('option[credit!=0]:enabled').eq(0);
		//если такой option есть хотябы 1
		if (nextAvail.size() > 0) {
			alert('Покупка в кредит для выбранной точки самовывоза временно невозможна.');
			//то просто отключаю его
			currentPUP.attr('disabled', 'disabled');
			//и делаю выбранным найденный option где атрибут credit != 0
			nextAvail.attr('selected', 'selected');
		} else { //если же таких option'ов больше нет
			//отключаю radiobutton c выбранным четвёртым вариантом оформления заказа
			$('#payType4').attr('disabled', 'disabled');
			alert('Покупка в кредит временно невозможна.');
			//тут мне надо как бы сэмулировать нажатие на первый вариант доставки, но так не работает :(
			$('#payType1').attr('checked', true);
		}
		return false;
	}
}
</script>
</body>
</html>

Последний раз редактировалось project1, 16.08.2012 в 12:08.
Ответить с цитированием