Добавление нового элемента в комбинированный список с помощью yui - PullRequest
0 голосов
/ 04 февраля 2009

Кто-нибудь может мне помочь, пожалуйста? (извините за мой английский, я французский) У меня есть выпадающий список, и я хочу вставить элемент «add-item», прежде чем читать массив данных, которые заполняются в моем выпадающем списке. Подведем итог:

1- Добавление в мой выпадающий список "add-item" (добавить перед прочтением массива),

2- Добавление к списку данных из моего массива (это нормально для этой части).

Вот мой код:

<h3>What would you like for breakfast?</h3>
<div id="bAutoComplete">
    <input id="bInput" type="text"> <span id="toggleB"></span>
    <div id="bContainer"></div>
    <input id="myHidden" type="hidden">
</div>

<script type="text/javascript" src="assets/datafab.js"></script>
YAHOO.namespace("example.container");
YAHOO.example.Combobox = function() {
    // Instantiate DataSources
    var bDS = new YAHOO.util.LocalDataSource(YAHOO.example.Data.menu.breakfasts);
    // Optional to define fields for single-dimensional array 
    bDS.responseSchema = {fields : ["name"]}; 

    // Instantiate AutoCompletes
    var oConfigs = {
        prehighlightClassName: "yui-ac-prehighlight",
        useShadow: true,
        queryDelay: 0,
        minQueryLength: 0,
        animVert: .01
    }
    var bAC = new YAHOO.widget.AutoComplete("bInput", "bContainer", bDS, oConfigs);
    bAC.resultTypeList = false;


    // Breakfast combobox
    var bToggler = YAHOO.util.Dom.get("toggleB");
    var oPushButtonB = new YAHOO.widget.Button({container:bToggler});
    var toggleB = function(e) {
        //YAHOO.util.Event.stopEvent(e);
        if(!YAHOO.util.Dom.hasClass(bToggler, "open")) {
            YAHOO.util.Dom.addClass(bToggler, "open")
        }

        // Is open
        if(bAC.isContainerOpen()) {
            bAC.collapseContainer();
        }
        // Is closed
        else {
            bAC.getInputEl().focus(); // Needed to keep widget active
            setTimeout(function() { // For IE
                bAC.sendQuery("");
            },0);
        }
    }
    oPushButtonB.on("click", toggleB);
    bAC.containerCollapseEvent.subscribe(function(){YAHOO.util.Dom.removeClass(bToggler, "open")
});

Мой источник данных массива взят из datafab.js (у нас есть: пончики, йогурт, ...), поэтому мне нужно добавить элемент «add-item» перед этим списком. Элемент «add-item» не должен находиться в массиве datafab.js Возможно ли это с помощью функции yui?

1 Ответ

0 голосов
/ 06 февраля 2009

Я предполагаю, YAHOO.example.Data.menu.breakfasts - это ссылка на массив.

Попробуйте изменить строку:

var bDS = new YAHOO.util.LocalDataSource(YAHOO.example.Data.menu.breakfasts);

до:

var bDS = new YAHOO.util.LocalDataSource(['add-item'].concat(YAHOO.example.Data.menu.breakfasts));

Если вы хотите, чтобы add-item появлялся в конце вашего списка, используйте:

var bDS = new YAHOO.util.LocalDataSource(YAHOO.example.Data.menu.breakfasts.concat('add-item'));

Подробнее см. Функцию JavaScript concat.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...