JavaScript / jQuery: как получить параметры с их значениями из .attr («действие»)? - PullRequest
0 голосов
/ 02 февраля 2020

У меня есть форма, отображаемая в Ruby На Rails, выглядит так:

<%= form_tag myaction_path(item_id: item.id), 
                            { class: 'myaction', 
                                id: "myaction_#{item.id}", 
                                method: :get, 
                                remote: true } do %>

, и я обрабатываю данные в JS:

$(document).ready(function () { 
  $(".myaction").submit(function(event){  
    event.stopPropagation();
    event.stopImmediatePropagation();
    event.preventDefault();

    console.log($(this).attr("action"));
    ...

console.log($(this).attr("action")); возвращает /app/myaction?item_id=5528.

Мне нужен item_id в качестве ключа для доступа к другим элементам в форме. Есть ли какой-нибудь элегантный способ извлечь его из $(this).attr("action") или мне нужно вручную проанализировать строку (/app/myaction?item_id=5528)?

Ответы [ 2 ]

0 голосов
/ 02 февраля 2020

Вы можете сохранить item_id в скрытом поле ввода. Или же, если вы хотите проанализировать item_id или любое другое поле из действия, вы можете использовать ниже js function:

function parseURL(url) {
    var searchObject = {}
    let queries = new URL(url).search.replace(/^\?/, '').split('&');
    for( i = 0; i < queries.length; i++ ) {
        split = queries[i].split('=');
        searchObject[split[0]] = split[1];
    }
    return searchObject;
}
0 голосов
/ 02 февраля 2020

Нет способа получить строку запроса из действия формы. Вы должны разобрать его вручную.

let str = $(this).attr("action");

function parseQueryString(str) {
  let query = str.split("?");
  if (query.length > 1) {
    let item = query[1].split("=");
    return item[1] ? item[1] : "";
  }
}

let result = parseQueryString(str);
console.log(result);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...