ОБНОВЛЕНИЕ: я изменил с
$('select[name=productSelect]').setOptions(["All products|ALL", "Products visible to all|VISIBLETOALL=1"]);
на
$('select[name=productSelect]').prepend(["All products|ALL", "Products visible to all|VISIBLETOALL=1"]);
И теперь я получаю эту ошибку:
error: TypeError: this.split is not a function.
и здесь я делю разделение:
setOptions: function (inOptions, forceEmpty) {
return this.each(function () { ...
$.each(options, function () { //Here the split
parts = this.split('|', 2);
if (parts.length === 1) parts.push(parts[0]);
if (parts[0] === 'optgroup') html.push('<optgroup label="' + parts[1] + '">');
else if (parts[0] === '/optgroup') html.push('</optgroup>');
else html.push('<option value="' + parts[1] + '">' + ($this.hasClass('no-translate-children') ? parts[0] : translator.getTranslation(parts[0])) + '</option>');
});
$this.html(html.join('')).val(value);
if(options.length < 2) $this.find('option').first().prop('selected', 'selected'); // if only one option -> select it
if ($this.val() !== value) $this.trigger('change'); // if some value is not an option, value will be removed
$this.trigger('elementChanged');
});
},
Я пишу функцию для установки опций в окне выбора, опции будут разделены в оптгруппах.До сих пор мне нужно было заполнить некоторые опции, но некоторые из них перезаписываются и не отображаются, например:
$('select[name=productSelect]').setOptions(["All products|ALL", "Products visible to all|VISIBLETOALL=1"]);
Не заполняется, я также не мог разделить их в optgroup, все заполненыварианты, заполняет без optgroup.Что я делаю не так?какой лучший способ установить параметры в optgroup?
это мой javascript:
setProductSelectOpt: function (AllianceUNID, PartnerUNID) {
var productSelect = $('select[name=productSelect]').val();
var alliances = $("[name$=productSelect]");
dbService.dbLookup("main", "Alliances", 2, null).done(function (products) {
alliances.setOptions(products, true);
});
var partners = $("[name$=productSelect]");
if (products.alliances) {
dbService.dbLookup("main", "PartnersAlliance", 3, products.alliances).done(function (products) {
partners.setOptions(products, true);
});
}
$.when(partners, alliances).done(function(a,p){
$('select[name=productSelect]').setOptions(["All products|ALL", "Products visible to all|VISIBLETOALL=1"]);
$('select[name=productSelect] optgroup[label=Alliances]').setOptions(a);
$('select[name=productSelect] optgroup[label=Partners]').setOptions(p);
});
},
и мой html:
<div class="span4 internal">
<label>Product selection
<select name="productSelect">
<option value="">-
<optgroup label="" name="">
</optgroup>
<optgroup label="Alliances">
</optgroup>
<optgroup label="Partners">
</optgroup>
</select>
</label>
</div>
Любое предложение будет очень ценным!Спасибо