Вам нужно, чтобы это было динамически, т. Е. На лету изменить, какое поле input
выбрано? Если это так, вам нужно добавить переменную в середине вашего селектора.
Если вы измените существующий код следующим образом, он будет работать:
$('#OrderItemViewModels_2__ProductId').val();
Два ваших примера не сработали, потому что вы форматируете строку селектора, как в атрибуте name
, но префикс #
указывает jQuery искать атрибут id
.
Можно также выбрать элемент по имени, который будет выглядеть следующим образом:
$('input[name="OrderItemViewModels[2].ProductId"]').val();
В ваших alert
примерах вы видите [Object object]
, потому что синтаксис $
в jQuery является ярлыком для вызова функции jQuery. То, что вы действительно делаете, это:
jQuery('input[name="OrderItemViewModels[2].ProductId"]').val();
Это просто старый вызов функции. S
- это удобное сокращение. Вы вызываете функцию и передаете строку, которая является селектором, который оценивает jQuery.
Ваш селектор ничего не возвращал, потому что он был неправильно отформатирован, поэтому вы в конечном итоге напечатали .val()
или значение самой функции jQuery. Это немного сбивает с толку, пока вы не разберетесь в том, как работает jQuery.
Чтобы сделать ваш селектор динамическим, просто соедините строки вокруг переменной, содержащей номер input
, который вы хотите выбрать:
$('input[name="OrderItemViewModels[' + myVariable + '].ProductId"]').val();
Вот jsFiddle , который иллюстрирует оба варианта.