简体   繁体   English

jQuery-尝试附加每个新选项以进行选择

[英]jQuery - Trying to append each new option to select

I'm trying to append every new <option> to the select field, but I seem to be getting multiples after the first submission. 我正在尝试将每个新的<option>追加到select字段,但是在第一次提交后,我似乎越来越多。

Any help is appreciated. 任何帮助表示赞赏。

<input id="name" placeholder="name">
<input id="phone" placeholder="phone">
<button id="submit">Submit</button>

and

$("button").on("click", function(){
    userData.name = $("#name").val();
    userData.phone = $("#phone").val();
    users.push(userData);

    var len = users.length;

    for (var i = 0; i < len; i++) {
        $("<option value=" + users[i].phone+ ">" + users[i].name + "</option>").appendTo(select);
    }
});

Heres a fiddle : http://jsfiddle.net/Buttery/5dQhj/3/ 这是一个小提琴: http : //jsfiddle.net/Buttery/5dQhj/3/

Currently outputs 当前输出

Terry
Gus
Gus
Foo
Foo
Foo

When you click your button, you're appending the new addition to the original data source, then looping over the original data source and re-adding each one, creating duplicates, try this: 当您单击按钮时,您会将新添加的内容附加到原始数据源,然后遍历原始数据源并重新添加每个数据源,创建重复项,请尝试以下操作:

$("button").on("click", function(){
    userData.name = $("#name").val();
    userData.phone = $("#phone").val();
    users.push(userData);

    $("<option value=" + userData.phone + ">" + userData.name + "</option>").appendTo(select);
});

Remove your for loop: 删除您的for循环:

$("button").on("click", function(){
    userData.name = $("#name").val();
    userData.phone = $("#phone").val();
    users.push(userData);

    $("<option value=" + userData.phone+ ">" + userData.name + "</option>").appendTo(select);
});

http://jsfiddle.net/9u7LS/ http://jsfiddle.net/9u7LS/

Move the global variables into the function 将全局变量移到函数中

$ ("button").on("click", function(){
var users = [];
var userData = {};
var select = $("#users");
userData.name = $("#name").val();
userData.phone = $("#phone").val();
users.push(userData);

var len = users.length;

for (var i = 0; i < len; i++) {
    $("<option value=" + users[i].phone + ">" + users[i].name +  "</option>").appendTo(select);
}

}); });

Try with this: Fiddle Demo 试试这个: 小提琴演示

As you were again and again adding the existing values using the loop so just avoid using the loop. 正如您一次次使用循环添加现有值一样,请避免使用循环。

var users = [];
var userData = {};
var select = $("#users");

$("button").on("click", function(){

userData.name = $("#name").val();
userData.phone = $("#phone").val();
users.push(userData);

    $("<option value=" + users[0].phone+ ">" + users[0].name +   
    "</option>").appendTo(select);
});
var users = [];
var userData = {};
var select = $("#users");

$("button").on("click", function(){
    userData.name = $("#name").val();
    userData.phone = $("#phone").val();
    users.push(userData);

    select.append($("option>/option>").attr("value",userData.phone).text(userData.name));



});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM