2016-08-03 3 views
0

Я хочу получить имя панели с помощью javascript, который будет расширяться. Я динамически показываю список панелей @ item.Name.Когда я расширяю любой из них, я пытался получить это расширенное имя панели ... var panelId = $ ("# коллапс") атр ("имя"). Но я получил только 1-е имя панели.Как я могу получить имя панели 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

Вы не можете иметь дублированные идентификаторы ('collapse') на вашей странице. –

+0

Пожалуйста, объясните, на каком языке это? '@foreach (элемент var в lstCategory)' Я не верю, что это 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

У меня есть список панелей, который уже отправлен по имени, и у меня есть кнопка отправки, которая используется для загрузки файла. Теперь я хочу пройти файл и имя панели для загрузки файла, на котором определяется категория, на которой я расширяю/выбираю панель. Как если бы я нажмет панель номер 3 и отправлю файл. Этот файл сохранит в панели 3 catagory.I думаю, что я пойму вас. –

Смежные вопросы