使用JQuery获取TextArea

时间:2012-03-03 17:25:29

标签: jquery textarea

我正在使用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。谁能告诉我为什么会这样?

4 个答案:

答案 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)

您无需使用childrenfind。由于您已经拥有表单的id,因此可以将其用于基础,并使用标准的jquery选择器,如下所示:

var product_question = $('textarea[name="product_question"]', this).val();

通过添加一个seocnd参数,你告诉jquery只使用this作为DOM树。