скрипт в окне fancybox

голоса: 0

Как сделать, чтобы в окне fancybox js скрипт загружался? 
сделал  

<script type="text/javascript">
$(document).ready(function() {
 $("#fancybasket$ID$").fancybox({
 onComplete: function(){
скрипт 
}
 });
});
</script>


но не работает.

скрипт находится на странице "вид товара в каталоге", открывает ввод количества в fancybox

| Автор: | Категория: JavaScript

Ответов: 1

Голоса: +1
 
Лучший ответ

В фенсибох нет колбэка onCompete. Есть onCancel, beforeLoad, afterLoad, beforeShow, afterShow, beforeClose, afterClose, onUpdate, triggered, onPlayStart и onPlayEnd.

Если нужно выполнить скрипт непосредственно перед закрытием окна, то используем beforeClose, если после закрытия afterClose.

Подробней на официальной странице fancybox

| Автор:
Выбор ответа лучшим | | Автор: Yuri_Geruk

Спасибо, но получается всё равно. У меня скрипт, который при вводе количества автоматически изменяет сумму и общий вес товара. На странице товара всё работает, а на странице каталога в окне fancybox не работает. При вводе количества ничего не меняется.

вот такой код fancybox

<script type="text/javascript">
$(document).ready(function() {
 $("#fancybasket$ID$").fancybox({
 openEffect : 'elastic',
 closeEffect : 'elastic',
 afterLoad: function(){
 function getChar(event) {
 if (event.which == null) {
 if (event.keyCode < 32) return null;
 return String.fromCharCode(event.keyCode)
 }
 if (event.which != 0 && event.charCode != 0) {
 if (event.which < 32) return null;
 return String.fromCharCode(event.which)
 }
 return null;
 }
 var form = document.forms.calculator;
 var moneyElem = form.elements.money;
 moneyElem.onkeypress = function(e) {
 e = e || event;
 var chr = getChar(e);
 if (e.ctrlKey || e.altKey || chr == null) return;
 if (chr < '0' || chr > '9') return false;
 }
 moneyElem.onkeyup = calculate;
 moneyElem.oninput = calculate;
 moneyElem.onpropertychange = function() {
 event.propertyName == "value" && calculate();
 }
 function calculate() {
 var sum = +moneyElem.value;
 if (!sum) return;
 document.getElementById('money-before').innerHTML = ((moneyElem.value -0) * $PRICE_RAW$) + 'руб';
 document.getElementById('money-before1').innerHTML = (moneyElem.value -0) * $WEIGHT$;
 }
 calculate();
 }
 });
});
</script>

Андрей Милюхин,
$("#fancybasket$ID$").fancybox({
	
    openEffect : 'elastic',
    closeEffect : 'elastic',
    afterLoad: function(){
		
        function getChar(event) {
			
            if (event.which == null) {
				
                if (event.keyCode < 32) return null;
                return String.fromCharCode(event.keyCode);
				
            };
			
            if (event.which != 0 && event.charCode != 0) {
				
                if (event.which < 32) return null;
                return String.fromCharCode(event.which);
				
            };
			
            return null;
			
        };
		
        var form = document.forms.calculator,
        moneyElem = form.elements.money;
		
        moneyElem.onkeypress = function(e) {
			
            e = e || event;
            var chr = getChar(e);
            if (e.ctrlKey || e.altKey || chr == null) return;
            if (chr < '0' || chr > '9') return false;
		  
        };
		
        moneyElem.onkeyup = calculate;
        moneyElem.oninput = calculate;
		
        moneyElem.onpropertychange = function() {
			
          event.propertyName == "value" && calculate();
		  
        };
		
        function calculate() {
			
            var sum = +moneyElem.value;
            if (!sum) return;
            document.getElementById('money-before').innerHTML = ((moneyElem.value -0) * $PRICE_RAW$) + 'руб';
            document.getElementById('money-before1').innerHTML = (moneyElem.value -0) * $WEIGHT$;
		  
        };
		
        calculate();
		
    }
	
});

 

Александр Леонов,
не получается. всё равно при вводе количества ничего не меняется
Александр Леонов,
еще актуально?
Александр Леонов,
сделал по-другому немного, точнее помогли сделать. сейчас, при нажатии на кнопку "купить сейчас" в окне фэнсибокс не учитываются опции. что забыл указать?
...