2009-10-20 60 views
3

我正在使用優秀的jEditable插件來在我的頁面上進行一些就地編輯。有一個點我需要一個多選元素。是否有jEditable插件允許我這樣做?是否有jQuery jEditable Multi-select插件?

我一直試圖使用jEditable作者的插件API來創建我自己的多選插件,但目前爲止沒有骰子。關於每個函數在API中做什麼,似乎都沒有足夠的文檔。他提供的每個示例插件似乎都依賴於其他jQuery插件。我只需要一個基本的多選元素...

回答

2

我做了一個小補丁格利揚的建議,導致它不能沒有「選擇」的可選選項工作,unhardcoded大小屬性。然後我將其修改爲jEditable插件,而不是您必須粘貼到jEditable本身的東西。我目前在客戶網站上使用它,但我使用它完全由JSON字符串填充,所以其他方法可能仍然是錯誤的。

$.editable.addInputType("multiselect", { 
    element: function (settings, original) { 
     var select = $('<select multiple="multiple" />'); 

     if (settings.width != 'none') { select.width(settings.width); } 
     if (settings.size) { select.attr('size', settings.size); } 

     $(this).append(select); 
     return (select); 
    }, 
    content: function (data, settings, original) { 
     /* If it is string assume it is json. */ 
     if (String == data.constructor) { 
      eval('var json = ' + data); 
     } else { 
      /* Otherwise assume it is a hash already. */ 
      var json = data; 
     } 
     for (var key in json) { 
      if (!json.hasOwnProperty(key)) { 
       continue; 
      } 
      if ('selected' == key) { 
       continue; 
      } 
      var option = $('<option />').val(key).append(json[key]); 
      $('select', this).append(option); 
     } 

     if ($(this).val() == json['selected'] || 
          $(this).html() == $.trim(original.revert)) { 
      $(this).attr('selected', 'selected'); 
     } 

     /* Loop option again to set selected. IE needed this... */ 
     $('select', this).children().each(function() { 
      if (json.selected) { 
       var option = $(this); 
       $.each(json.selected, function (index, value) { 
        if (option.val() == value) { 
         option.attr('selected', 'selected'); 
        } 
       }); 
      } else { 
       if (original.revert.indexOf($(this).html()) != -1) 
        $(this).attr('selected', 'selected'); 
      } 
     }); 
    } 
}); 
+0

好吧,它顯示了一個允許選擇多個選項的選擇,但我無法使它顯示單元格中的選定選項。只有一個選項,如果我的sUpdateURL函數返回一個有效的值或崩潰,如果它不是一個有效的值:( – Ivan 2011-11-08 17:30:56

1

我一直在尋找相同的。試圖做到這一點,但似乎沒有任何工作。

順便說一句,我發現這個但這似乎沒有工作,要麼 - http://pastebin.com/cbDndv5h

+0

您的pastebin示例只需要一點點改進。我在回答中更新了它,對我來說效果很好。 – 2010-12-04 16:06:16

-1

的jeditable插件做到這一點。 例子:

$('.editable').editable('http://www.example.com/save.php', { 
data : " {'E':'Letter E','F':'Letter F','G':'Letter G', 'selected':'F'}", 
type : 'select', 
submit : 'OK' 
}); 
+2

不,這不是多重選擇,它只允許選擇一個項目。 – Ivan 2011-11-08 17:26:26