2016-08-03 12 views
0

我想通過JavaScript獲取面板名稱,這是擴展。我通過@ item.Name動態顯示面板列表。當我展開它們中的任何一個時,我嘗試通過...獲取擴展面板名稱var panelId = $( 「#崩潰」)ATTR( 「名」)。 但我只有第一名的面板。如何通過javascript獲取面板名稱?

首先,我想說,我想通過ajax文件發送到控制器的擴展面板的面板名稱的參數。現在我想要面板名稱爲sumit函數,然後傳遞給控制器​​。

指數

<div class="panel panel-info class" style="height: 450px; width: 300px; overflow-y:scroll;"> 
     @foreach (var item in lstCategory) 
     { 
      <div class="panel-heading" id="panel-heading"> 
       <h4 class="panel-title"> 
        <a data-toggle="collapse" onclick="collapse(@item.Id);" name="@item.Name" id="collapse" href="#@item.Id">@item.Name</a>      
       </h4> 
      </div> 

     <div id="@item.Id" class="panel-collapse collapse in"> 
      <div id="[email protected]"> 
      </div> 
     </div> 

     }  
</div> 
<form id="form" name="form" enctype="multipart/form-data" method="post"> 
      @*<label class="btn btn-block btn-primary"> 
       Browse &hellip; <input type="file" name="file" class="filestyle" id="file" style="display: none;" /> 
      </label>*@ 
      <span class="btn btn-default btn-file" id="browse"style="width:100%;"> 
       <input type="file" name="file" class="filestyle" id="file" /> 
      @*<input type="file">*@ 
      </span> 
      <input type="submit" name="Submit" class="btn" id="Submit" value="Submit" style="width:100%;margin-top:5px;" disabled> 
     </form> 

的JavaScript

var panelId = $("#collapse").attr("name"); 
     alert("Panel name :" + panelId); 


    $(document).ready(function (e) { 
    $('#Submit').click(function (event) { 


     var file = $("file").data(); 
     var panelId = $("#collapse").attr("name"); 
     alert("Panel name :" + panelId); 
     var formData = new FormData(); 
     var totalFiles = document.getElementById("file").files.length; 
     for (var i = 0; i < totalFiles; i++) { 
      var file = document.getElementById("file").files[i]; 

      formData.append("file", file); 
     } 
     alert(file); 
      $.ajax(
     { 
      url: '@Url.Action("Upload","Document")', 
      type: "POST", 
      data: { file: formData, Id: panelId },//{ file: formData, value: dam },//formData, 
      processData: false, 
      contentType: false, 
      success: function (response) { 
       console.log(response); 
      }, 
      error: function (error) { 
       console.log(error); 
      }, 

     }); 
    }) 
}); 
+0

你不能有重複的ID('collapse')。 –

+0

請解釋這是什麼語言? '@foreach(lstCategory中的var項目)'我不相信它是javascript或html。 – BobRodes

+0

使用可以使用$(this)來獲取活動標籤的名稱 –

回答

-1

您可以使用$(本)得到有源標籤的名稱。或者您可以傳遞名稱中的功能,而不是ID:onclick =「collapse(@ item.name);」

function collapse() 
{ 
    var itemName=$(this).attr("name") 
} 
+0

你怎麼知道'$(this)'不會引用'document'對象,因爲OP沒有提供任何上下文? – BobRodes

+0

OP已經寫了onclick事件 –

+0

而且你知道他發佈的代碼是在onclick事件處理程序中,還是你只是假設?我無法親自告訴。 – BobRodes

0

你真的想要面板的名字嗎?

您可以通過使用與合攏功能的參數,如操作:

onclick="collapse(this);" 

所以,你可以訪問父DIV。

我很抱歉,但你的問題對我來說不是很清楚,因爲我不明白你需要做什麼。

如果您能多解釋一下,我們將很樂意爲您效勞。

UPDATE

所以,儘量使用此代碼:您的網頁上

$(document).ready(function(){ 

    //I am moving your click to JQuery 
    $("#collapse").click(function(){ 

     //Clear last selected item 
     $("#collapse").each(function(){ 
      $(this).attr("data-selected", ""); 
     }); 

     //Mark the actual as selected 
     $(this).attr("data-selected", "yes"); 
    }); 

    //Now, update your actual submit to get the actual selected item 
    $('#Submit').click(function (event) { 
     var nameSelected = $("#collapse[data-selected=yes]").eq(0).attr("name"); 

     //rest of your code here... 
    }); 

}); 
+0

對不起,我沒有提到我的問題清楚。請致歉 –

+0

請不要擔心,請我想幫助你,如果你多解釋一下你想要什麼,最好的問候,這將是非常好的。 –

+0

我有一個名稱已經分類的面板列表,我有一個提交按鈕,用於上傳文件。現在我想通過一個文件和一個面板名稱上傳文件,該類別的基礎上,我擴大/選擇panel.Like,如果我點擊3號面板和發送文件。該文件將保存在面板3 catagory.I認爲我會理解你。 –