使用JQuery获取文本区域(TextArea)

11

我正在使用 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总是被读取,但product question总是为null。有人能告诉我这是为什么吗?

4个回答

17

.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);
});

是使用 val() 和 find() 的组合。 - Devin Dixon
个人而言,我会使用.val(),但是对于textarea.text()也可以。请参见http://jsfiddle.net/kfD7b/以查看演示。 - pete

4
您正在对 <textarea> 使用 text(),而应该使用 val()
var product_question = $(this).children('textarea[name="product_question"]').val();

这也适用于其他输入元素类型,例如<select><input>

1
应该注意,所有设计为输入的元素,如 inputtextareaselect 都应该使用 val() 进行访问。这是使 jQuery 强大的因素之一。 - user684934

0

你不需要使用childrenfind。因为你已经有了表单的id,所以可以以此为基础,只需使用标准的jQuery选择器即可:

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

通过添加第二个参数,您告诉 jQuery 仅使用 this 作为 DOM 树。

0

使用 .val() 代替 .text()。它会解决问题的。


可以像这里一样解释.val().text()之间的区别。 - sinemetu1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接