Получение TextArea с помощью JQuery
Я представляю форму с помощью JQuery. Форма выглядит ниже
<form class="ask-more-form">
<div class="product_info_2">
<textarea name="product_question" class="textbox" placeholder="Ask You Question Here"></textarea>
</div>
<input type="hidden" name="product_id" value="1" id="product_id">
<a href="#" class="whiteButton submit" id="ask-more-submit-button">Ask Question</a>
</form>
И JQuery, чтобы поймать форму, выглядит следующим образом:
$('#ask-more').on('submit', '.ask-more-form', function() {
var product_id = $(this).children('input[name=product_id]').val();
var product_question = $(this).children('textarea[name="product_question"]').text();
alert(product_question);
//submitQuestion(product_id, product_question);
});
Product_id всегда читается, но вопрос о продукте всегда равен нулю. Может ли кто-нибудь сказать мне, почему это происходит?
Ответы
Ответ 1
.children
только на один уровень вниз. Вместо этого используйте .find
:
$('#ask-more').on('submit', '.ask-more-form', function () {
var product_id = $(this).children('input[name=product_id]').val();
var product_question = $(this).find('textarea[name="product_question"]').text();
alert(product_question);
//submitQuestion(product_id, product_question);
});
Ответ 2
Вы используете text()
в <textarea>
, когда вы должны использовать val()
var product_question = $(this).children('textarea[name="product_question"]').val();
Это справедливо для других типов входных элементов, таких как <select>
и <input>
Ответ 3
Use .val() instead of .text()
. Он выполнит трюк
Ответ 4
Вам не нужно использовать children
или find
. Поскольку у вас уже есть id
формы, вы можете использовать ее для своей базы и просто использовать стандартный селектор jquery, например:
var product_question = $('textarea[name="product_question"]', this).val();
добавив аргумент seocnd, который вы указываете jquery, чтобы использовать только this
в качестве дерева DOM.