0

このコードは、各行の近くにあるこの選択ボックスを使用して、約 15 行のデータを出力します。ユーザーが選択した各行の値をキャプチャして、次の関数に送信する必要があります。次のエラーが表示されます: Uncaught TypeError: Object # has no method 'val'. これを達成するためのより良い方法はありますか?

count = 1;
$.each(data, function(index, element) {
    $('<div class="hd_field">Payment Format: <select name="Payment_Format" id="Payment' + count + '" class="Payment_Format"><option value="CTX" selected="selected">Company to Company</option><option value="PPD">Company to Person</option></select><div id ="Selected_Format' + count + '"></div></div>').appendTo(newDiv3);
    $('select#Payment' + count).change(function() {
        alert(this.val());
        PaymentFormat = $(this).val();
        element.PmtRec.PmtFormat = PaymentFormat;
        $('#Selected_Format' + count).text(PaymentFormat);
    });
    console.log(data);
    count = count + 1;
});​
4

1 に答える 1

1

エラーは次の行にスローされます。

$('select#Payment'+count).change(function() { 
    alert(this.val()); //Here
    //...
});

問題は、changeイベント ハンドラーでthis、jQuery オブジェクトではなく実際の DOM ノードを参照し、DOM ノードにvalメソッドがないことです。使用する場合は、jQuery に渡す必要がありますval

$('select#Payment'+count).change(function() {
    alert($(this).val()); //Pass `this` to jQuery
    //...
});
于 2012-06-06T15:49:55.017 に答える