Magento类别编辑页面和ajax

时间:2014-01-27 17:31:25

标签: magento

我通过在我的模块mysql安装脚本中创建一个新的属性输入渲染器类型,在类别编辑区域中为一些输入属性添加一些额外的html:

$installer->addAttribute(
    'catalog_category',
    'mymodule_category_popularity',
    array(
        'label' => 'My Label',
        'group' => 'My Group',   
        'type'  => 'int',
        'class' => 'validate-number',
        'required' => false,
        'default' => 50,
        'input_renderer' => 'mymodule/adminhtml_catalog_category_widget_slider',
    )
);

渲染器:

class Mynamespace_Mymodule_Block_Adminhtml_Catalog_Category_Widget_Slider extends Varien_Data_Form_Element_Text
{
    public function getAfterElementHtml()
    {

        $html = parent::getAfterElementHtml();
        return $html."  <div id=\"slider\"></div>";
    }
}

和javascript:

var $j = jQuery.noConflict();

$j(document).ready(function(){  

     $j( "#slider" ).slider();

});  

这很好,插件正确加载,jQuery也是如此(因为我已经使用我的布局xml为模块加载了它)。我看到一个滑块。但是,在页面完成后(Magento ajax重新加载了类别编辑标签),我的滑块消失了。我想,这是因为javascript代码没有再次运行。

我已经尝试将我的javascript添加到核心edit.phtml(因为还有其他Magento JS)但是我只是收到错误:$j('#slider).slider() is not a function。这是因为内容是通过ajax加载的。

那么,我如何确保在类别编辑区域中使用$j('#slider).slider()?让我感到困惑。

1 个答案:

答案 0 :(得分:0)

我通过创建一个javascript函数来完成这个:

function loadedInput() {
    $('#slider').slider();
}

在属性渲染器中调用该函数:

class Mynamespace_Mymodule_Block_Adminhtml_Catalog_Category_Widget_Slider extends Varien_Data_Form_Element_Text
{
    public function getAfterElementHtml()
    {

        $html = parent::getAfterElementHtml();
        return $html."  <div id=\"slider\"></div><script>loadedInput();</script>";
    }
}