2014-02-12 140 views
2

我在jQuery UI的組合框中遇到了一些麻煩。我試圖將source select的佔位符添加到ui的輸入中,這樣我就可以輕鬆地將所有內容設置在我的元素上,並讓小部件根據需要選擇。然而,它似乎並不希望佔位符由任何空格/符號分隔,只適用於第一個單詞。jQuery UI添加佔位符到combobox

我已經試過:

input = $("<input data-validation='required' placeholder=" + select.attr('placeholder') + ">") 

而且隨着hifen和下劃線代替空格(在這種情況下,例如佔位符= 「啓動類型」 或 「Start_typing」):

input = $("<input data-validation='required' placeholder=" + select.attr('placeholder') + ">").replace(/-/g, ' ') 

我我也嘗試將文本應用到title屬性並以相同的方式獲取,但它具有相同的結果。

我終於嘗試執行以下操作:

placeholder = select.attr('placeholder').replace(/-/g, ' '); 
console.log(placeholder); 
input = $("<input data-validation='required' placeholder="+placeholder+">")... 

我能看到佔位符的價值是被應用到輸入之前是正確的,所以我在虧損在何處何去何從。有任何想法嗎?

JSFIDDLE包含整個小部件配置以及我正在測試的一些驗證。

回答

2

你需要在你的HTML字符串添加引號:

input = $('<input data-validation="required" placeholder="' + select.attr('placeholder') + '">'); 

否則,它會處理的話2到n的附加屬性。

0

您還可以通過添加您設置爲選擇控件的處理屬性來更改組合框的.js文件。 例如,你有定期的選擇:

<select id="YourId" placeholder="Some Text">...</select> 

比:

通過增加線

this.input.attr("placeholder", this.element.attr('placeholder')); 

喜歡這個

$(function() { 
     $("#YourId").combobox(); 
     $("#toggle").click(function() { 
      $("#YourId").toggle(); 
     }); 
    }); 

和編輯組合框的腳本:

(function ($) {   
$.widget("custom.combobox", { 
      _create: function() { 
       this.wrapper = $("<span>") 
        .addClass("custom-combobox") 
        .insertAfter(this.element); 

       this.element.hide(); 
       this._createAutocomplete(); 
       this._createShowAllButton(); 

       // Add processing placeholder option 
       this.input.attr("placeholder", this.element.attr('placeholder'));    
      }, 
    ..... 
    });})(jQuery); 

在這種WA您還可以添加任何其他選項,如「只讀」等。