2014-02-12 178 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您还可以添加任何其他选项,如“只读”等。