2015-06-26 16 views
2

我需要使用从http://designwithpc.com/plugins/ddslick图像下拉列表我试图在回发后设置“选定”选项,但我得到无限循环的回发。这里是我的代码:如何在回发后使用ddSlick将选项设置为选项?

<form id="form1"> 
<select id="localeId" name="localeId"></select> 
</form> 

<script type="text/javascript"> 
     //Dropdown plugin data 
     var ddData = [ 
      { 
       text: "English", 
       value: "en", 
       selected: false, 
       description: "English", 
       imageSrc: "/assets/img/flags-icons/en-flag.png" 
      }, 
      { 
       text: "Portuguese", 
       value: "pt", 
       selected: false, 
       description: "Portuguese", 
       imageSrc: "/assets/img/flags-icons/pt-flag.png" 
      }, 
      { 
       text: "Russian", 
       value: "ru", 
       selected: false, 
       description: "Russian", 
       imageSrc: "/assets/img/flags-icons/ru-flag.png" 
      }, 
      { 
       text: "Spanish", 
       value: "es", 
       selected: false, 
       description: "Spanish", 
       imageSrc: "/assets/img/flags-icons/es-flag.png" 
      } 
     ]; 

     $('#localeId').ddslick({ 
      data: ddData, 
      defaultSelectedIndex: 3, 
      onSelected: function (data) { 
       if (data.selectedIndex > 0) { 
        $('#hidCflag').val(data.selectedData.value); 
        $.cookie('lang', document.getElementById("hidCflag").value, { expires: 365 }); 
        form1.submit(); 
       } 

      } 
     }); 
    </script> 

请帮我解决它吗?

回答

0

您可以使用插件的选择方法类似

$('#demoSetSelected').ddslick('select', {index: i }); 

选择一个特定的指数。

按照ddSlick演示#4在其网站(http://designwithpc.com/plugins/ddslick#demo

+0

它给出了同样的问题。请参阅我在onSelected事件中使用了form1.submit()。 .ddslick方法将运行form1.submit()并创建无限循环。 –

+0

好的,你能提供jsfiddle吗?这将有助于我们更好地解决您的问题。 –

+0

不,因为我使用APS.NET。我需要的是发布一个值来形成回传后我需要将选定的值设置为下拉列表。一切工作正常,但我在同一个地方使用form.submit和defaultSelectedIndex,并导致无限循环。 –

0

呼叫:

$('#demoSetSelected').ddslick('select', { index: i }); 

也会触发您定义造成一个无限循环的 “onSelected()” 函数。

我通过修改源文件(jquery.ddslick.js)和把一个标志添加解决了同样的问题,禁用呼叫到onSelected():

  1. 改变选择功能:

    methods.select = function (options) { 
        return this.each(function() { 
         if (options.index) 
          selectIndex($(this), options.index, options.disableTrigger); 
        }); 
    } 
    
  2. 修改selectIndex函数定义来自:

    function selectIndex(obj, index) { 
    

    到:

    function selectIndex(obj, index, disableTrigger) { 
    
  3. 在功能selectIndex的尽头(...),变:

    if (typeof settings.onSelected == 'function') { 
        settings.onSelected.call(this, pluginData); 
    } 
    

    到:

    if (!disableTrigger) { 
        if (typeof settings.onSelected == 'function') { 
         settings.onSelected.call(this, pluginData); 
        } 
    } 
    

然后使用来代替:

$('#demoSetSelected').ddslick('select', { index: i, disableTrigger: true }); 

顺便:按值的代替指标来选择,检查出中提到的代码:

https://github.com/prashantchaudhary/ddslick/issues/78

https://github.com/lunrfarsde/ddslick

它的DD-光滑一个叉取出的描述中部分。但增加了按值选择。

相关问题