在Magento上更新ajac(php和js)后,页面更新忘记了下拉选项

时间:2013-04-04 06:28:44

标签: jquery magento

我们有以下代码生成一个复选框(选择付款方式)。当选择第一种方法(理想/银行)时,会在银行显示下拉列表

现在,当用户选择银行&在此之后页面被F5或ajax请求刷新生成相同的html代码,但我从列表中选择的银行被遗忘

现在,我将如何监控下拉列表以及何时更改保存值/选择(甚至可能仅在内存中仅用于整个页面不重新加载的ajax请求)以及新的ajax请求何时返回并打印输出(没有selectioN)将选择设置回来?

我们使用Magento 1.7和jquery

希望有人知道一个漂亮的伎俩

<ul class="form-list" id="payment_form_<?php echo $_code ?>" style="display:none">
        <li>
            <label for="<?php echo $_code ?>_bank"><?php echo $this->__(Mage::getStoreConfig('payment/sisow/issuerchoice')) ?> <span class="required">*</span></label><br/>
            <select id="<?php echo $_code ?>_bank" name="payment[<?php echo $_code ?>_bank]" class="input-text validate-text required-entry">
                <option value=""><?php echo $this->__('Selecteer een bank...'); ?></option>
                <?php foreach($banks as $bank)
                {
                ?>
                    <option value="<?php echo $bank['value'];?>"><?php echo $bank['label']; ?></option>
                <?php
                }
                ?>
            </select>
            <br/>
            <?php echo $this->__(Mage::getStoreConfig('payment/sisow/payoff')) ?>
        </li>
    </ul>

以下HTML是通过AJAX生成的

现在我们如何保存在<select id="sisow_bank"下选择的选项(可能通过onchange),但是当通过ajax重新加载块时触发卸载事件。

<dl class="sp-methods">
    <dt>
            <input id="p_method_sisow" value="sisow" type="radio" name="payment[method]" title="Betalen met iDEAL (NL)" onclick="payment.switchMethod('sisow')" checked="checked" class="radio" autocomplete="off">
            <label for="p_method_sisow">Betalen met iDEAL (NL) </label>
    </dt>
        <dd>

    <ul class="form-list" id="payment_form_sisow" style="">
        <li>
            <label for="sisow_bank">Kies uw bank <span class="required">*</span></label><br>
            <select id="sisow_bank" name="payment[sisow_bank]" class="input-text validate-text required-entry" autocomplete="off">
                <option value="">Selecteer een bank...</option>
                                    <option value="01">ABN Amro Bank</option>
                                    <option value="02">ASN Bank</option>
                                    <option value="04">Friesland Bank</option>
                                    <option value="05">ING</option>
                                    <option value="06">Rabobank</option>
                                    <option value="07">SNS Bank</option>
                                    <option value="08">RegioBank</option>
                                    <option value="09">Triodos Bank</option>
                                    <option value="10">Van Lanschot Bankiers</option>
                                    <option value="11">Knab</option>
                            </select>

我们试过了

jQuery(document).ready(function(){

    var item = window.localStorage.getItem('payment_select');
    jQuery('select[name=payment[sisow_bank]]').val(item);

    jQuery('select[name=payment[sisow_bank]]').change(function() {
       window.localStorage.setItem('payment_select', $(this).val());
    });


}); 

但它看起来不像在div部分的ajax重新加载后调用ready函数

1 个答案:

答案 0 :(得分:0)

使用jQuery ready功能创建一个新函数。从jQuery.ready函数调用该新函数(除了函数调用现在添加的新函数之外,它现在都是空的)。在ajax调用结束时,添加对新函数的调用。