Проверка правильности Laravel находит входное имя с помощью JQuery, используя синтаксис массива точек - PullRequest
1 голос
/ 08 июля 2019

Как я могу найти во входных данных JQuery по имени, если у меня есть синтаксис массива точек из Laravel?

Пример ввода:

<input type="text" name="Payments[0][1][Amount]">
<input type="text" name="Reservations[0][Date]">

Ответ проверки Laravel на запрос ajax:

errors: {
  Payments.0.1.Amount: "Field is required",
  Reservations.0.Date: "Field should be date"
}

Проблема: Как я могу перебрать массив ошибок во входных именах доступа к JavaScript, если у меня есть только имена точек массива?

Например, преобразуйте Payments.0.1.Amount в Payments[0][1][Amount] или Reservations.0.Date в Reservations[0][Date]

for (const [key, value] of Object.entries(errors)) {
     key = somehowParseDotInputToArray(key); // how? :)
   $('#app input[name="' + key + '"]').append( '<p class="error">'+ value +'</p>' );
}

Ответы [ 2 ]

1 голос
/ 08 июля 2019

Просто разделите имя в объекте ошибки из ..Используя var $nameArr = name.split('.');

Предположим, что name = Reservations.0.Date будет выглядеть как let nameArr = ['Reservations','0','Date']

, затем укажите имя, как вы хотите, чтобы

var newName = $nameArr[0] + '['+ $nameArr[1] +']' + '[' +$nameArr[2] + ']';

newName выглядело как Reservations[0][Date]

зациклите этот процесс для всех переменных имен и создайте новый объект ошибки.

1 голос
/ 08 июля 2019

Уже нашли решение, может быть, кто-то тоже поможет:)

function DotArrayToJs(str){
  var splittedStr = str.split('.');

  return splittedStr.length == 1 ? str : (splittedStr[0] + '[' + splittedStr.splice(1).join('][') + ']');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...