我正在使用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,但产品问题始终为null。谁能告诉我为什么会这样?
答案 0 :(得分:18)
.children
only goes one level down。请改用.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);
});
答案 1 :(得分:5)
当您使用text()
时,您在<textarea>
上使用val()
var product_question = $(this).children('textarea[name="product_question"]').val();
对于<select>
和<input>
答案 2 :(得分:0)
Use .val() instead of .text()
。它会做的伎俩
答案 3 :(得分:0)
您无需使用children
或find
。由于您已经拥有表单的id
,因此可以将其用于基础,并使用标准的jquery选择器,如下所示:
var product_question = $('textarea[name="product_question"]', this).val();
通过添加一个seocnd参数,你告诉jquery只使用this
作为DOM树。