JQuery评论框类似于Stackoverflow?

时间:2009-05-06 14:53:08

标签: jquery asp.net-mvc

前段时间我曾问过如何制作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');
    })
});

然而,当你打开一个然后打开另一个时,第二个控制...

4 个答案:

答案 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脚本只适用于它“附加”的特定表单。