Подтвердить что ты не робот

Поле ввода ввода JQuery

Я нашел похожие вопросы, но ничего не работает для меня.

имеют такие входы, как:

<input type="text" value="2" name="pages_title[1]">
<input type="text" value="1" name="pages_title[2]">

пытается получить эти поля:

$('input[name="pages_title[]"]')

но имеют пустые результаты: (

как получить все поля? Я могу получить его как $('input[name="pages_title[1]"]')

4b9b3361

Ответ 1

Использовать начинается с селектора

$('input[name^="pages_title"]').each(function() {
    alert($(this).val());
});

Пример jsfiddle

Примечание: В согласии с @epascarello лучшим решением является добавление класса к элементам и ссылка на этот класс.

Ответ 2

это обычно работает на флажках и радио-кнопках... но каждое имя должно быть одинаковым.

<input type="text" value="2" name="pages_title[]">
<input type="text" value="1" name="pages_title[]">

var x = $('input[name="pages_title[]"]').val();

который "предположил", чтобы получить все поля в значениях, разделенных запятыми. никогда не пробовал это с текстовыми полями, поэтому не могу это гарантировать.

как @John прокомментировал: перебирать их. $('input[name="pages_title[]"]').each(function() { var aValue = $(this).val(); });

EDIT: Не всегда вам нужно просто ответить на вопросы OP, иногда вам нужно научить их лучшим методам. (извините, если это звучит высокомерно)

COMMENT: определяя ввод как

<input type="text" value="1" name="pages_title[1]">
<input type="text" value="2" name="pages_title[2]">

разбивает массив, каждый вход имеет уникальное имя, поэтому он больше не является массивом.

Ответ 3

Вам нужно использовать начинается с селектора

var elems = $( "[name^='pages_title']" );

Но лучшим решением является добавление класса к элементам и обращение к классу. Причина в том, что это быстрый поиск.

Ответ 4

var multi_members="";
$("input[name='bayi[]']:checked:enabled").each(function() {
    multi_members=$(this).val()+","+multi_members;
});

Ответ 5

использовать метод карты, мы можем получить входные значения, которые хранятся в массиве.

var values = $("input[name='pages_title[]']").map(function(){return $(this).val();}).get();

Ответ 6

Вы можете указать свои имена текстовых полей ввода, например:

<input type="text" value="2" name="pages_title[1]" class="pages_title">
<input type="text" value="1" name="pages_title[2]" class="pages_title">

и повторите так:

$('input.pages_title').each(function() {
    alert($(this).val()); 
});

Ответ 7

Я думаю, что лучший способ - использовать форму Propper и использовать jQuery.serializeArray.

<!-- a form with any type of input -->
<form class="a-form">
    <select name="field[something]">...</select>
    <input type="checkbox" name="field[somethingelse]" ... />
    <input type="radio" name="field[somethingelse2]" ... />
    <input type="text" name="field[somethingelse3]" ... />
</form>

<!-- sample ajax call -->
<script>
$(document).ready(function(){
    $.ajax({
        url: 'submit.php',
        type: 'post',
        data: $('form[name="a-form"]).serializeArray(),
        success: function(response){
            ...
        }
    });
});
</script>

Значения будут доступны в PHP как $_POST['field'][INDEX].

Ответ 8

Вы можете избежать квадратных скобок с двойной обратной косой чертой:

$('input[name="pages_title\\[\\]"]')

Ответ 9

Вы можете использовать селектор содержимого:

[name * = "value" ]: выбирает элементы с указанным атрибутом со значением, содержащим заданную подстроку.

$( document ).on( "keyup", "input[name*='pages_title']", function() {
     alert($(this).val());
});

Ответ 10

Чтобы выбрать элемент по атрибуту, имеющему определенный признак, вы можете создать новый селектор, как в следующем фрагменте, используя шаблон регулярного выражения. Использование регулярного выражения предназначено для максимально гибкого выбора нового селектора:

jQuery.extend(jQuery.expr[':'], {
    nameMatch: function (ele, idx, selector) {
        var rpStr = (selector[3] || '').replace(/^\/(.*)\/$/, '$1');
        return (new RegExp(rpStr)).test(ele.name);
    }
});


//
// use of selector
//
$('input:nameMatch(/^pages_title\\[\\d\\]$/)').each(function(idx, ele) {
  console.log(ele.outerHTML);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>


<input type="text" value="2" name="pages_title[1]">
<input type="text" value="1" name="pages_title[2]">
<input type="text" value="1" name="pages_title[]">