Здравствуйте, столкнулся с такой проблемой: при загрузке странице скрипт на 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');
}
Вобщем что то у мня не так написано. Помогите разобраться пожалуйста.