День добрый! Есть вот такой шаблон который приходит аяксом при смене селекта
<table>
<tr>
<td>
<div class="form-group">
<div class="input-group">
<input type="number" name="new_value[]" data-new-val class="form-control" data-id="{{ $current->id }}" data-type="{{ $current->type }}" />
<div class="input-group-btn">
<button type="button" class="btn btn-success" data-btn-new-val data-id="{{ $current->id }}"><i class="fa fa-plus"></i></button>
</div>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="form-group">
<div class="input-group">
<input type="number" name="new_value[]" data-new-val class="form-control" data-id="{{ $current->id }}" data-type="{{ $current->type }}" />
<div class="input-group-btn">
<button type="button" class="btn btn-success" data-btn-new-val data-id="{{ $current->id }}"><i class="fa fa-plus"></i></button>
</div>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="form-group">
<div class="input-group">
<input type="number" name="new_value[]" data-new-val class="form-control" data-id="{{ $current->id }}" data-type="{{ $current->type }}" />
<div class="input-group-btn">
<button type="button" class="btn btn-success" data-btn-new-val data-id="{{ $current->id }}"><i class="fa fa-plus"></i></button>
</div>
</div>
</div>
</td>
</tr>
</table>
При нажатии на кнопку data-btn-new-val
, надо получить значение которое введено в текстовое поле, которое находится рядом с этой кнопкой. Я получаю всегда значение из первого инпута, даже если нажал на кнопку для третьего инпута.
$(document).on('click','[data-btn-new-val]', function(e){
e.preventDefault();
var btnNewVal = $(this);
var inputNewVal = $('[data-new-val]');
var currentDataValue;
inputNewVal.each(function(i,currentDataValue){
console.log(currentDataValue);
// Вот тут не могу получить значения из поля. Он выводит все значения.
return currentDataValue;
});
$.ajax({
url: "/api/v1/set-new-val",
type: "post",
dataType: "json",
data: {
id: currentDataValue.id,
type: currentDataValue.type,
val: currentDataValue.val
},
success: function(data)
{
console.log(data);
}
})
});
Нашел один способ. Проверить в цикле. Но как вернуть массив потом, что бы отправить аяксом?
inputNewVal.each(function(currentDataValue){
if($(this).data('id') == btnNewVal.data('id'))
{
currentDataValue = {
id: $(this).data('id'),
type: $(this).data('type'),
val: $(this).val()
};
}
return currentDataValue;
});
console.log(currentDataValue); // тут пусто почему то
$(".button").on('click', function() {
var ss = jQuery(this).parent().find("input[type=text]").val();
console.log(ss);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="form">
<input type="text" />
<input type="button" class="button" />
</div>
<div class="form">
<input type="text" />
<input type="button" class="button" />
</div>
Если я вас правильно понял, вам нужно найти значение инпута, которое находится рядом с текущей кнопкой. jQuery(this)
позволяет однозначно определить кнопку, даже если есть множество таких т.к. в this
будет именно та кнопка, на которую нажали. C помощью .parent()
перемещаемся к родительскому элементу (обычно это контейнер, который оборачивает и поле ввода и саму кнопку) и ищем ближайшее поле ввода (type=input
).
попробуй через родительский элемент и в нем найти тот что тебе нужен:
var parent = $(this).parents('.input-group');
var input = parent.find('input[type="text"][name^="new_value"]').eq(0);
var input_value = input.val();
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Подскажите пожалуйста можно ли использовать одну функцию для нескольких задач
Вот типичная ситуация с абсолютно позиционированным элементом: То есть логика css такова, что при ховере свойство transform просто заменяется...