Показать сообщение отдельно
  #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');
}


Вобщем что то у мня не так написано. Помогите разобраться пожалуйста.
Ответить с цитированием