Получить динамически значение из атрибута данных - PullRequest
0 голосов
/ 27 апреля 2018

Как получить и сохранить значение атрибута data-id? Значение внутри него изменяется при нажатии кнопки, поэтому мне нужен метод, который получает значение при его изменении. Я пробовал document.getelementbyid / name / value, но я получаю только значение, сохраненное с первого нажатия кнопки. Метод, который я использую сейчас $(this).data('id'), ничего не возвращает. Спасибо

файл с усами:

<td>
    <form id="Form" action="./downloaddoc" method="GET">
        <input type="hidden" name="p" value="download"/>
        <input type="hidden" name="fileid" data-id="{{file_id}}"/>
        <input class="button download_button" type="submit" value="Download">
    </form>
</td>

ЯШ:

$(document).on('click', '.download_button', download_doc);
function download_doc(event) {
    event.preventDefault();
    var id = $(this).data('id');
    console.log(id);
    window.location.href = window.location.href + '?p=download&id=' + fileid;
}

1 Ответ

0 голосов
/ 27 апреля 2018

Вы ищете атрибут данных в кнопке загрузки, а не в поле ввода, где он фактически присутствует.

Добавьте класс / идентификатор в поле ввода, чтобы его можно было найти.

При нажатии на кнопку найдите ближайшую форму, а затем найдите поле ввода, содержащее идентификатор файла, и извлеките из него идентификатор файла.

<td>
  <form id="Form" action="./downloaddoc" method="GET">
    <input type="hidden" name="p" value="download"/>
    <!-- Added  a class to the input field -->
    <input type="hidden" name="field" class="input-download-file" data-id="{{file_id}}"/>
    <input class="button download_button" type="submit" value="Download">
  </form>
</td>

Javascript:

$(document).on('click', '.download_button', download_doc);
function download_doc(event) {
  event.preventDefault();

  // Find the closest form
  var form = $(this).closest('form');

  // Find the input field which constains the download file id
  var input = $(form).find(".input-download-file");

  // Get the file id
  var id = $(input).data('id');
  console.log(id);
  window.location.href = window.location.href + '?p=download&id=' + fileid;
}
...