前段时间我曾问过如何制作Stackoverflow等可折叠评论框
原始问题是found here
然而从那时起,我遇到了另一个问题,我不确定如何解决这个问题,我很确定我的解决方法与原始问题相同,但不太确定语法。
基本上我的问题是,我添加了一个函数来限制用户输入注释的字符数,并显示剩余的字符。
但是因为列表中可能有很多注释框,所以只为列表中的第一个执行脚本,我需要是动态的。
在其他方面,就像在原始问题中打开评论框的链接一样,每个人都有一个唯一的ID。
如何对监视字符输入的脚本执行相同的操作。
$(function(){
$('#comment').keyup(function(){
limitChars('comment', 255, 'charlimitinfo');
})
});
更新:我确实通过这样做
让他们变得充满活力$(function(){
$('.comment-<%=ViewData.Model.Entry.EntryID %>').keyup(function(){
limitChars('comment-<%=ViewData.Model.Entry.EntryID %>', 255, 'charlimitinfo');
})
});
然而,当你打开一个然后打开另一个时,第二个控制...
答案 0 :(得分:2)
根据我的想法,您的评论框会动态添加。问题是,因为你有多个不能工作的因为一个id是唯一的所以它只适用于一个,所以你可以只设置类,而不是通过id选择它们。作为控制标签中的“注释”并以这种方式选择它们。例如:
$(function(){
$('.comment').keyup(function(){
limitChars('comment', 255, 'charlimitinfo');
})
});
你的文字标签示例:
<textarea cols="20" rows="10" class="comment"></textarea>
编辑可行的方法是保持你的jquery设置条件的方式,但每个标签必须有一个唯一的名称,要么添加一些东西,使它成为唯一的,但是jquery仍然会知道它属于选择器分支,或者为每个id标签添加不同的数字
答案 1 :(得分:1)
你的选择器需要在css类$(“。comment”)而不是id $(“#comment”)。
答案 2 :(得分:0)
我确实解决了自己的问题......
打开第二个评论框时,它无法正常工作的问题是我忘了为您输入一个唯一的ID,当您输入字符数时,该ID会更新。
<script language="javascript">
function limitChars(textid, limit, infodiv)
{
var text = $('.'+textid).val();
var textlength = text.length;
if(textlength > limit)
{
$('#' + infodiv).html('You cannot write more then '+limit+' characters!');
$('#'+textid).val(text.substr(0,limit));
return false;
}
else
{
$('#' + infodiv).html('You have '+ (limit - textlength) +' characters left.');
return true;
}
}
$(function(){
$('.comment-<%=ViewData.Model.Entry.EntryID %>').keyup(function(){
limitChars('comment-<%=ViewData.Model.Entry.EntryID %>', 255, 'charlimitinfo-<%=ViewData.Model.Entry.EntryID %>');
})
});
答案 3 :(得分:0)
您会注意到SO使用表单中的唯一ID:
<form class="post-comments" id="form-comments-459429">
..我在我创建的上传控件中使用了类似的方法。我可以将上传控件多次呈现到页面上,并通过ajax从局部视图呈现 - 每次创建视图时,表单都会被赋予一个唯一的ID,并且jQuery脚本随附它,因此,在您的情况下,它可能会看起来像这样:
$('#comment-1234')
..这样,每个jQuery脚本只适用于它“附加”的特定表单。