0

我正在尝试将每个新的附加<option>到该select领域,但在第一次提交后我似乎得到了倍数。

任何帮助表示赞赏。

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

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

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

当前输出

Terry
Gus
Gus
Foo
Foo
Foo
4

5 回答 5

2

当您单击按钮时,您会将新添加的内容附加到原始数据源,然后遍历原始数据源并重新添加每个,创建重复项,试试这个:

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

    $("<option value=" + userData.phone + ">" + userData.name + "</option>").appendTo(select);
});
于 2012-09-05T12:07:58.453 回答
1

删除你的 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/

于 2012-09-05T12:07:46.837 回答
0

将全局变量移动到函数中

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

});

于 2012-09-05T12:13:29.143 回答
0

试试这个:小提琴演示

正如您一次又一次地使用循环添加现有值一样,请避免使用循环。

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);
});
于 2012-09-05T12:14:38.357 回答
0
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));



});
于 2012-09-05T12:18:43.423 回答