Доброго времени суток.
Скопировал [I].default[/I] в свою тему, и наблюдаю все параметры заказа на одной странице.
Обрадовался полному полету фантазии...
в ./template.php обиграл так:
[CODE] <div id="sections">
<div id="props" style="display:none">
<?php include($_SERVER["DOCUMENT_ROOT"].$templateFolder."/props.php"); ?>
</div>
<div id="delivery" style="display:none">
<?php include($_SERVER["DOCUMENT_ROOT"].$templateFolder."/delivery.php"); ?>
</div>
<div id="props2" style="display:none">
</div>
<div id="paysystem" style="display:none">
<?php include($_SERVER["DOCUMENT_ROOT"].$templateFolder."/paysystem.php"); ?>
</div>
<div id="summary" style="display:none">
<?php include($_SERVER["DOCUMENT_ROOT"].$templateFolder."/summary.php"); ?>
</div>
</div>
<div align="right" id="bttnSubmit">
<input type="button" name="submitbutton" on click="submitForm('Y');" value="<?=GetMessage("SOA_TEMPL_BUTTON")?>" class="bt3 bttnSubmit" style="display:none;width:250px;margin-left: 482px;">
<input type="button" value="Дальше" class="bt3 bttnNext" style="display:inline-block;width:250px;margin-left: 482px;">
<input type="button" value="Вернуться" class="bt3 bttnPrev" style="display:none;width:250px;margin-left: 482px;">
</div>
[/CODE]
Далее с помощью [I]jQuery[/I] манипулирую. Все работает, но есть НО!
Как только я на втором этапе выберу доставку, которые загрузились из [I]./delivery.php[/I], то отрабатывает событие [I]submitForm()[/I].
И тут я не могу понять как оно работает...
Далее мой [I]JS[/I] код уже не фурычит, почти не фурычит.
Такое ощущение, что переимплодились только те файлы, что сейчас в [I]div#sections[/I], так как кнопки остаются на месте в том состоянии в каком были.
На редирект не похоже, так как ни [I]$(document).ready()[/I] ни [I]windows.onload[/I] не отработали.
Причем кнопки работаю, но они не манипулируют контентом.
В общем говорить можно долго, под спойлером мой ./template.php:
Скрытый текст |
|---|
[CODE]<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>
<a name="order_fform"></a> <div id="order_form_div" class="order-checkout"> <NOSCRIPT> <div class="errortext"><?=GetMessage("SOA_NO_JS")?></div> </NOSCRIPT> <?php if( !$USER->IsAuthorized() && $arParams["ALLOW_AUTO_REGISTER"] == "N" ){ if( !empty($arResult["ERROR"]) ){ echo '<div class="errortext"><ul>'; foreach($arResult["ERROR"] as $v) echo "<li>".$v."</li>"; echo "</ul></div>"; } elseif( !empty($arResult["OK_MESSAGE"]) ){ foreach($arResult["OK_MESSAGE"] as $v) echo ShowNote($v); }
include($_SERVER["DOCUMENT_ROOT"].$templateFolder."/auth.php"); } else{
if( $arResult["USER_VALS"]["CONFIRM_ORDER"] == "Y" ){ if( strlen($arResult["REDIRECT_URL"]) > 0 ){ ?> <sc ript> <!-- window.top.location.href='<?=CUtil::JSEscape($arResult["REDIRECT_URL"])?>'; //--> </sc ript> <?php die(); } else include($_SERVER["DOCUMENT_ROOT"].$templateFolder."/confirm.php"); } else{ ?> <sc ript> <!-- function submitForm(val){ if(val != 'Y') BX('confirmorder').value = 'N';
var orderForm = BX('ORDER_FORM');
BX.ajax.submitComponentForm(orderForm, 'order_form_content', true); BX.submit(orderForm);
return true; } function SetContact(profileId){ BX("profile_change").value = "Y"; submitForm(); } //--> </sc ript> <?php if( $_POST["is_ajax_post"] != "Y" ){ ?> <fo rm action="" method="POST" name="ORDER_FORM" id="ORDER_FORM"> <div id="order_form_content" class="myorders"> <?php }else{ $APPLICATION->RestartBuffer(); } ?> <?=bitrix_sessid_post()?> <?php if( !empty($arResult["ERROR"]) && $arResult["USER_VALS"]["FINAL_STEP"] == "Y" ){ if( !empty($arResult["ERROR"]) ){ echo '<div class="errortext"><ul>'; foreach($arResult["ERROR"] as $v) echo "<li>".$v."</li>"; echo "</ul></div>"; } ?> <sc ript> top.BX.scrollToNode(top.BX('ORDER_FORM')); </sc ript> <?php }?>
<?php if( count($arResult["PERSON_TYPE"]) > 1 ){ ?>
<h2><?=GetMessage("SOA_TEMPL_PERSON_TYPE")?></h2> <table> <tbody> <? foreach($arResult["PERSON_TYPE"] as $v) { ?> <tr> <td style="vertical-align:top;padding:0 5px;"><input type="radio" id="PERSON_TYPE_<?=$v["ID"]?>" name="PERSON_TYPE" value="<?= $v["ID"] ?>"<?if ($v["CHECKED"]=="Y") echo " checked=\"checked\"";?> on click="submitForm()"></td> <td><label for="PERSON_TYPE_<?=$v["ID"]?>"><?=$v["NAME"] ?></label></td> </tr> <? } ?> </tbody> </table> <input type="hidden" name="PERSON_TYPE_OLD" value="<?=$arResult["USER_VALS"]["PERSON_TYPE_ID"]?>"> <? } else{
if( IntVal($arResult["USER_VALS"]["PERSON_TYPE_ID"]) > 0 ){?> <input type="hidden" name="PERSON_TYPE" value="<?=IntVal($arResult["USER_VALS"]["PERSON_TYPE_ID"])?>"> <input type="hidden" name="PERSON_TYPE_OLD" value="<?=IntVal($arResult["USER_VALS"]["PERSON_TYPE_ID"])?>"> <?php }else{ foreach( $arResult["PERSON_TYPE"] as $v ){?> <input type="hidden" id="PERSON_TYPE" name="PERSON_TYPE" value="<?=$v["ID"]?>">11 <input type="hidden" name="PERSON_TYPE_OLD" value="<?=$v["ID"]?>"> <?php } } }?> <div id="sections"> <div id="props" style="display:none"> <?php include($_SERVER["DOCUMENT_ROOT"].$templateFolder."/props.php"); ?> </div> <div id="delivery" style="display:none"> <?php include($_SERVER["DOCUMENT_ROOT"].$templateFolder."/delivery.php"); ?> </div> <div id="props2" style="display:none">
</div> <div id="paysystem" style="display:none"> <?php include($_SERVER["DOCUMENT_ROOT"].$templateFolder."/paysystem.php"); ?> </div> <div id="summary" style="display:none"> <?php include($_SERVER["DOCUMENT_ROOT"].$templateFolder."/summary.php"); ?> </div> </div> <?php if( $_POST["is_ajax_post"] != "Y" ){ ?> <input type="hidden" name="confirmorder" id="confirmorder" value="Y"> <input type="hidden" name="profile_change" id="profile_change" value="N"> <input type="hidden" name="is_ajax_post" id="is_ajax_post" value="Y"> </div> <br /><br /> <div align="right" id="bttnSubmit"> <input type="button" name="submitbutton" on click="submitForm('Y');" value="<?=GetMessage("SOA_TEMPL_BUTTON")?>" class="bt3 bttnSubmit" style="display:none;width:250px;margin-left: 482px;"> <input type="button" value="Дальше" class="bt3 bttnNext" style="display:inline-block;width:250px;margin-left: 482px;"> <input type="button" value="Вернуться" class="bt3 bttnPrev" style="display:none;width:250px;margin-left: 482px;"> </div> </form> <?if($arParams["DELIVERY_NO_AJAX"] == "N"):?> <sc ript language="JavaScript" src="/bitrix/js/main/cphttprequest.js"></sc ript> <sc ript language="JavaScript" src="/bitrix/components/bitrix/sale.ajax.delivery.calculator/templates/.default/proceed.js"></sc ript> <?endif;?>
<?php }else{?> <sc ript> top.BX('confirmorder').value = 'Y'; top.BX('profile_change').value = 'N'; </sc ript> <?php die(); } } } ?> </div>
<sc ript>
var $oOrder = {}; var time = 0;
function instanceOrder(){
$oOrder.sections = {};
$oOrder.head = $('#sections');
$oOrder.sections.props = {}; $oOrder.sections.props.city = $('.item.ORDER_PROP_6').detach(); $oOrder.sections.props.addr = $('.item.ORDER_PROP_7').detach(); $oOrder.sections.props.obj = $('#props').detach();
$oOrder.sections.delivery = {}; $oOrder.sections.delivery.obj = $('#delivery').detach();
$oOrder.sections.props2 = {}; $oOrder.sections.props2.obj = $('#props2'); $oOrder.sections.props2.obj.append($oOrder.sections.props.city.fadeIn(time)); $oOrder.sections.props2.obj.append($oOrder.sections.props.addr.fadeIn(time)); $oOrder.sections.props2.obj.detach();
$oOrder.sections.paysystem = {}; $oOrder.sections.paysystem.obj = $('#paysystem').detach();
$oOrder.sections.summary = {}; $oOrder.sections.summary.obj = $('#summary').detach();
$oOrder.finish = $('#bttnSubmit'); $oOrder.bttns = {}; $oOrder.bttns.prev = $('#bttnSubmit .bttnPrev').detach(); $oOrder.bttns.next = $('#bttnSubmit .bttnNext' ).detach(); $oOrder.bttns.sbmt = $('#bttnSubmit .bttnSubmit').detach();
$oOrder.bttns.next.bind('click',function(){ $oOrder.step = $oOrder.step+1; goFunction( $oOrder.step ); });
$oOrder.bttns.prev.bind('click',function(){ $oOrder.step = $oOrder.step-1; goFunction( $oOrder.step ); });
} function detachAllSection(){ ///console.log( $oOrder.sections ); $.each($oOrder.sections, function(index,value){ ///console.log(value); value.obj.fadeOut(time).detach(); }); } function bttnActive(p,n,s){ ///console.log( $oOrder.bttns ); $.each( $oOrder.bttns, function(index,value){ ///console.log(value); value.fadeOut(time).detach(); if( p ) $oOrder.bttns.prev.fadeIn(time).appendTo($oOrder.finish); if( n ) $oOrder.bttns.next.fadeIn(time).appendTo($oOrder.finish); if( s ) $oOrder.bttns.sbmt.fadeIn(time).appendTo($oOrder.finish); }); }
function toProps(){ ///console.log('toProps'); detachAllSection(); $oOrder.sections.props.obj.fadeIn(time).appendTo($oOrder.head); bttnActive(0,1,0); } function toDelivery(){ ///console.log('toDelivery'); detachAllSection(); $oOrder.sections.delivery.obj.fadeIn(time).appendTo($oOrder.head); bttnActive(1,1,0); } function toProps2(){ ///console.log('toProps2'); detachAllSection(); $oOrder.sections.props2.obj.fadeIn(time).appendTo($oOrder.head); bttnActive(1,1,0); } function toPaysystem(){ ///console.log('toPaysystem'); detachAllSection(); $oOrder.sections.paysystem.obj.fadeIn(time).appendTo($oOrder.head); bttnActive(1,1,0); } function toSummary(){ ///console.log('toSummary'); detachAllSection(); $oOrder.sections.summary.obj.fadeIn(time).appendTo($oOrder.head); bttnActive(1,0,1); }
function goFunction(step){ ///console.log(step); switch( step ){ case 0: toProps(); break; case 1: toDelivery(); break; case 2: toProps2(); break; case 3: toPaysystem(); break; case 4: toSummary(); break; //case 5: toFinish(); break; } }
$(document).ready(function(){ ///console.log('ready'); instanceOrder(); $oOrder.step = 0; goFunction( $oOrder.step ); }); window.on load = function(){ ///console.log('window.onload'); } </sc ript>[/CODE] |
С [I]detach()[/I] я конечно переборщил, потом уберу, надеюсь не он виноват...