Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.09.2014, 17:58
Новичок на форуме
Отправить личное сообщение для redwert Посмотреть профиль Найти все сообщения от redwert
 
Регистрация: 25.03.2013
Сообщений: 6

Событие на input radio
Здравствуйте, столкнулся с такой проблемой: при загрузке странице скрипт на input radio вешает событие. Пытаюсь осуществить это событие при загрузке страницы, если этот input radio выделен.
Вот скрипт который вешает событие:
new (Class.create({
	loadingImageUrl: '<?php echo $this->getSkinUrl('images/opc-ajax-loader.gif');?>',
	initialize: function() {
	    this.bind('click', /^s_method.+$/i, this.onShippingChange);
	},
	bind: function(eventType, elementIdRegExp, cb) {
		document.addEventListener(eventType, function (event) {
		var el = event.target
		, found;
		while (el && !(found = el.id.match(elementIdRegExp))) {
			el = el.parentElement;
		}
		if (found) {
			cb.call(this, el, event);
					}
		}.bind(this));
	},

	onShippingChange: function(el, event ) {
		var hideForm = true;
		$$('#checkout-shipping-method-loadaction input[type=radio]').each(function(el){
		    if (el.id.match(/^s_method_novaposhta/) && el.checked) {
			hideForm = false;
			this.showForm(el.parentNode);
		   }
	    }.bind(this));

	    if (hideForm) {
		this.hideForm();
	    }
	},
	showForm: function(formContainer) {
		this.showLoading(formContainer);
		new Ajax.Request('<?php echo $this->getUrl('novaposhta/checkout/form')?>', {
			onSuccess: function(response) {
				this.hideLoading();
				this.updateForm(response.responseText, formContainer);
			}.bind(this)
		});
	},
	hideForm: function () {
		if ($('novaposhta-form')) {
			Element.remove('novaposhta-form');
		}
	},
	updateForm: function(html, formContainer) {
		var currentForm = $('novaposhta-form');
		if (!formContainer && currentForm) {
			formContainer = currentForm.parentNode;
		}
		if (!formContainer) {
			return;
		}
		if (currentForm) {
                       currentForm.parentNode.removeChild(currentForm);
		}
		Element.insert(formContainer, html);
	},
	showLoading: function(formContainer) {
		if (!formContainer) {
			var currentForm = $('novaposhta-form');
			if (currentForm) {
				formContainer = currentForm.parentNode;
			}
		}
		if (!formContainer) {
			return;
		}
		Element.insert(formContainer, '<p id="novaposhta-loading"><img src="'+this.loadingImageUrl+'" alt="" /> <span><?php echo $this->__('Loading, please wait...');?></span></p>');
	},
	hideLoading: function() {
		Element.remove('novaposhta-loading');
	}
}))();

Попытался на основе этого сделать следующим образом:
jQuery(document).ready(function(){
    // тут часть кода в которой определяю выделенный input, ее не пишу, а далее то что должно вызывать событие

     var el= document.getElementById(checked_el);
     var formContainer = el.parentNode;
     Element.insert(formContainer, '<p id="novaposhta-loading"><img src="'+this.loadingImageUrl+'" alt="" /> <span><?php echo $this->__('Loading, please wait...');?></span></p>');
     new Ajax.Request('<?php echo $this->getUrl('novaposhta/checkout/form')?>', {
    onSuccess: function(response) {
        hideLoading();
        updateForm(response.responseText, formContainer);
        }.bind(this)
    });
});

ну и переписал функции так:
var loadingImageUrl = '<?php echo $this->getSkinUrl('images/opc-ajax-loader.gif');?>'	

function updateForm(html, formContainer) {
	var currentForm = $('novaposhta-form');
	if (!formContainer && currentForm) {
	     formContainer = currentForm.parentNode;
	}
	if (!formContainer) {
            return;
	}
	if (currentForm) {
	    currentForm.parentNode.removeChild(currentForm);
	}
	Element.insert(formContainer, html);
}

function showLoading(formContainer) {
	if (!formContainer) {
		var currentForm = $('novaposhta-form');
		if (currentForm) {
			formContainer = currentForm.parentNode;
		}
	}
	if (!formContainer) {
		return;
	}
}

function hideLoading() {
	Element.remove('novaposhta-loading');
}


Вобщем что то у мня не так написано. Помогите разобраться пожалуйста.
Ответить с цитированием
  #2 (permalink)  
Старый 19.09.2014, 22:42
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Сообщение от redwert
Пытаюсь осуществить это событие при загрузке страницы, если этот input radio выделен.
Тут может выбрать только сервер. Значит вы смотрите что сервер выбрал и, если он выбрал включить радио, вы его включаете elem.click() - так по простому делается raise event
Ответить с цитированием
  #3 (permalink)  
Старый 22.09.2014, 14:13
Новичок на форуме
Отправить личное сообщение для redwert Посмотреть профиль Найти все сообщения от redwert
 
Регистрация: 25.03.2013
Сообщений: 6

Сообщение от kostyanet Посмотреть сообщение
Тут может выбрать только сервер. Значит вы смотрите что сервер выбрал и, если он выбрал включить радио, вы его включаете elem.click() - так по простому делается raise event
Я сначала , так и сделал. Но по нажатию на этот инпут выполняются также другие действия. Вот поэтму мне надо выполнить именно нужные действия по загрузке страницы.
Ответить с цитированием
  #4 (permalink)  
Старый 23.09.2014, 09:45
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Значит проверяйте контекст - кто щелкнул - скрипт или юзер.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Такое возможно? При выборе radio надо чтобы менялось значение в input Stas111111 Общие вопросы Javascript 11 23.05.2014 00:41
Как вызвать событие уже отмеченной radio кнопки? cha0s jQuery 1 09.05.2014 13:48
input radio при выборе передавать значения в скрипт portalamur AJAX и COMET 16 19.09.2013 22:14
Событие input и IE10 kobezzza Internet Explorer 2 21.03.2013 19:02
При добавлении DOCTYPE "плывут" размеры input type=text Demath (X)HTML/CSS 4 08.07.2012 19:27