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 に答える