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 回答