【发布时间】:2010-02-20 14:10:10
【问题描述】:
我再次询问有关评论表单的问题,我正在制作一个图片网站,每张图片都有自己的评论表单,所以当我提交表单时,我会这样做:
$('#comment_form').live('submit', function() {
...
所以为了只选择这个表单 textearea 值,我尝试使用它,但我得到未定义的错误,这是我尝试的方法:
$('#comment_form').live('submit', function() {
image_comment_text=$(this).closest("#comment_text").val(); //textarea id is comment_text
我尝试使用 find(),它可以正常工作,但是当我为几张图片提交 cmets 时,我应该得到 2 或 3 次 cmets,因为 find 会找到所有出现带有 comment_text id 的 textarea .. 我该怎么做?
@molf,这里是 javascript 生成的 HTML:
var xHTML = "<div class=\"addComment\">";
xHTML += "<form action=\"<?=base_url()?>images/post_comment/" + post + "\" method=\"post\" class=\"comment_form\" name=\"comment_form\">";
xHTML += "<input type=\"hidden\" class=\"comment_post_id\" name=\"comment_post_id\" value=\"" +post + "\"/>";
xHTML += "<textarea class=\"comment\" name=\"comment_text\" rows=\"8\" cols=\"40\"></textarea>";
xHTML += "<input type=\"submit\" name=\"submit\" class=\"post_image_comment\" value=\"Comment\"><span> Don't make it too big!</span>";
xHTML += "</form></div>";
编辑
当我打印到控制台记录 textarea 的值时,我只得到一个结果,现在当我尝试附加 ul cmets 时,我得到 2 个相同的值..这里是怎么回事..
<ul class="comments"></ul>
下面是根本不在文档中的评论表单,当单击某个锚点时,表单会在.comments下方弹出,当表单提交时,我想附加 cmets 以添加新评论以列出现有项目无序列表 cmets ,这是整个代码:
$('form[name^="comment_form"]').live('submit', function(event) {
r= $(this).find('> .comment').val();
$('<div class="overlay"></div>')
.appendTo('.addComment')
.fadeIn(200, function() {
$('.comments')
.append('<li id="new_append">' + r + '</li>')
.children(':last')
.height($('.comments li:last').height())
.hide()
.slideDown(800, function() {
var bodyHeight = $('html').height();
$('.addComment').fadeOut(500, function() {
$('html').height(bodyHeight);
$('h2#leaveAComment').fadeOut(200, function(){$(this).text('Thank you for your comment!').fadeIn(200)});
});
});
$('html, body').scrollTo( $('#new_append'), 800 );
});
event.preventDefault();
});
编辑二@patrick
加载评论表单的javascript在上面..这里是HTML:
-------------每个都开始--------------
<div id="image-12" class="image_content">
<img src="..." />
<ul class="comments hidden"> //This is where the comments are appended to <li></li>
</ul>
<div style="float: left; display: block; width: 100%;">
<a id="image_comment-12" class="image_comment" onclick="showComments('12');" href="javascript:;">Add Comment</a>
</div>
<div id="addComment-12">//this is where the comment form loads
</div>
</div>
---------END--- FOR EACH--------- 图片 ...
【问题讨论】:
-
closest找到一个元素的最近的parent。 IE。它会从您的表单中搜索到html元素,而不是在您的表单中。 -
@vava 我如何在其中进行搜索,但只能应用于具有特定类的一个元素
-
@c0mrade,molf 给了你正确的答案,在你的查询中使用
:first(或:last)修饰符。 -
@vava 再次获得多个选定值
-
没问题@c0mrade。我认为您当前的解决方案并不难/棘手,但因为@patrick 和我只能看到您的一半代码,因此帮助调试它是一项艰苦的工作。如果您能够托管您目前拥有的东西,以便我们可以看到它的实际效果,我们很可能会为您解决它。
标签: javascript jquery