0

セレクターで非表示フィールドを JavaScript 関数に渡す必要があります。

これが私の機能です

function deleteAttachments(id,selector){
            $('#proof' + id).remove();
            //show warning about save
            var tmp = selector.val();
            var sep = "";
            if (tmp != "")
                sep = ",";
            selector.val(tmp + sep + id);
        }    

上記の関数呼び出しは、次のメソッド内にあります。

 function listAttachments(proofs,selector,hiddenField,after){

            //alert(hiddenField.id);
            var rows = "<table width=\"70%\">";
            for(var i=0; i<proofs.length; i++) {
                var proof = proofs[i];
                rows += "<tr id=\"proof" + proof["ID"] + "\" width=\"40%\">"
                rows += "<td><input type=\"hidden\" value=\"" + proof["filename"] + "\" id=\"Proof" + i + "\" />Uploaded: " + proof["uploaded"] + "</td>"
                rows += "<td width=\"90px\"><input type=\"button\" value=\"View...\" onclick=\"viewProof('" + proof["URL"] + "'); \" id=\"btnProof" + i + "\" class=\"btn\"></td>"
                rows += "<td width=\"90px\"><input type=\"button\" value=\"Delete\" id=\"btnDelete" + i + "\" onclick=\"deleteAttachments(" + proof["ID"] + "," + hiddenField + ");\" class=\"btn\"/></td></tr>";
            }
            rows += "</table>";
            if(after){
                selector.after(rows);
            }else{
                selector.html(rows);
            }       
        }

以下の関数呼び出しを見つけてくださいlistAttachments(私はasp.netを使用しており、さまざまな方法を試しました)、

listAttachments(visualIds,$('#tblProofs'),$('#hidDeletedAttachments'),true)

また

listAttachments(visualIds,$('#tblProofs'),$('#' + <%= hidDeletedAttachments.ID%>'),true)

これがレンダリングされると、deleteAttachments関数は引数をオブジェクトとして受け入れます (下の画像に表示されているように)。

私の質問は、セレクターを関数に渡し、呼び出し元の関数で使用する方法です。

ここに画像の説明を入力

4

1 に答える 1

2

セレクターを渡すのではなく、セレクターに一致する要素のコレクションを渡します。

hiddenField を listAttachments に渡す代わりに、hiddenField ID を渡します。

listAttachments(visualIds,$('#tblProofs'), 'hidDeletedAttachments'),true)

次に、deleteAttachment 関数でオブジェクトを作成します

function deleteAttachments(id,hiddenFieldId){
        var selector = $('#' + hiddenFieldId);
        $('#proof' + id).remove();
        //show warning about save
        var tmp = selector.val();
        var sep = "";
        if (tmp != "")
            sep = ",";
        selector.val(tmp + sep + id);
    }    
于 2013-10-02T07:54:00.373 に答える