2013-10-02 5 views
0

Мне нужно передать в селектор скрытое поле функции javascript.Передача скрытого поля в функцию 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 принимает аргумент как объект (как показано на изображении ниже).

Мой вопрос в том, как я могу передать селектор функции и использовать ее в вызывающей функции.

enter image description here

+0

я прохожу обычно работают на жидком к функциям селекторы «ид» и сделать «селектор» внутри функции. Попробуйте передать аргументы функции и сделать селектор внутри функции (в зависимости от этих аргументов). – zchpit

ответ

2

Вы не передавая селектор, вы передаете коллекцию элементов, которые соответствуют селектору.

Вместо передачи hiddenField в listAttachments передайте идентификатор hiddenField.

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); 
    }  
Смежные вопросы