0

OK、ユーザーが次のように行を追加できるテーブルがあります。

// Append New Row To Email Change Form //
$(function () {
var count = 1000;
$('#AddRow').click(function () {
    $('table.subgrid tbody').append('<tr><td><input type="hidden" name="delete[]" value="No">No</td><td><input type="text" name="customernumber[]" id="' + count + '_cust" onChange="ajax_customer_info(' + count + ')" maxlength="6" /></td><td><span id="' + count + '_name"></span></td><td><select name="type[]"><option value="A">ACH</option><option value="C">Credit</option><option value="I">Invoice</option><option value="S">Statement</option></select></td><td><select name="deliverymethod[]"><option value="E">Electronic</option><option value="P">Print</option></select></td><td><input size="40" type="text" class="fieldname" maxlength="50" name="newemailaddress[]" /><input type="hidden" name="oldemailaddress[]" /><input type="hidden" name="companyid[]" value="1" /><input type="hidden" name="action[]" value="add" /></td></tr>');
    count++;
});

});

この行内に顧客番号を入力できます。これは、ajaxを介して顧客名を自動的に返す必要があります。これがajaxです:

function ajax_customer_info(row) {
xmlHttp=GetXmlHttpObject();
if (xmlHttp!=null) {
    var url="/hq/servlet/customerinfo";
    url=url+"?customernumber="+document.getElementById(row+"_cust").value;
    url=url+"&sid="+Math.random();
    xmlHttp.onreadystatechange=function(row) {
        if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") {
            xmlDoc=xmlHttp.responseXML;
            var data = JSON.parse(xmlHttp.responseText);
            document.getElementById(row+"_name").innerHTML=data.name;
        }
    }
    xmlHttp.open("GET",url,true);
    xmlHttp.send(null);
}
}

問題は、これが顧客名を入力しないことです。これでrow+を削除すると気づきました:

document.getElementById(row+"_name").innerHTML=data.name;

そして、それをsay( "name")に置き換え、もちろん、対応するIDを追加された行のIDに変更します。ただし、ユーザーは複数の行を追加できるため、一意のIDが必要です。誰かが私がここで間違っていることを教えてもらえますか?ありがとう!

4

1 に答える 1

1

row準備完了状態関数のajaxにパラメーターを設定しています。これは、に渡した行の値の代わりに使用されajax_customer_infoます。したがって、xmlHttp.onreadystatechange=function()代わりに使用してくださいxmlHttp.onreadystatechange=function(row)

于 2013-03-08T23:45:29.727 に答える