使用 yui 将新项目添加到组合框

发布于 2024-07-13 08:34:35 字数 2114 浏览 4 评论 0原文

有人可以帮我吗? (对不起我的英语,我是法国人) 我有一个组合框,我想在读取组合框中填充的数据数组之前插入一个项目“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 函数可以吗?

Can anybody help me, please ?
(sorry for my english, I'm french)
I've a combobox and I want insert an item "add-item" before read an array of data that populate in my combobox. To sum-up :

1- Adding to my combobox "add-item" (add before read the array),

2- Adding to my combobox data from my array (it's ok for this part).

Here is my code :

<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")
});

My array datasource come from datafab.js (we have :donuts, yogurt, ...), so i need to add the item "add-item" before this list. The item "add-item" should not be in the array datafab.js
Is it possible with a yui function ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

黎歌 2024-07-20 08:34:35

我假设 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 函数了解更多详细信息。

I'll assume YAHOO.example.Data.menu.breakfasts is a reference to an array.

Try changing the line:

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

to:

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

If you want add-item to appear at the end of your combobox, use:

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

See the JavaScript concat function for more details.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文