2009-05-06 54 views
0

前段時間我曾問如何使一個可摺疊的評論框狀#1類似於Stackoverflow的JQuery評論框?

原來的問題是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

你是什麼意思的:當另一個被加載時,它需要通過其他..? – TStamper 2009-05-06 15:33:57

+0

@TStamper新打開的評論框的計數器適用於第一個打開的文檔和新的打開的文檔...意思是它控制着兩個文檔,但原始文檔停止工作 – dswatik 2009-05-06 15:36:15

+0

意思是一個人正在輸入時,這兩個角色會進入兩個? – TStamper 2009-05-06 15:38:01

回答

2

我的想法是您的評論框是動態添加的。問題是,因爲你有多個不會工作,因爲ID是唯一的所以它只適用於一個,所以,而不是按ID選擇它們,你可以設置類爲「評論」在控制標籤並以這種方式選擇它們。例如:

$(function(){ 
    $('.comment').keyup(function(){ 
    limitChars('comment', 255, 'charlimitinfo'); 
    }) 
}); 

文本標記示例:

<textarea cols="20" rows="10" class="comment"></textarea> 

編輯,可以工作在保持你的jQuery設置它爲條件的方式的方式,但每個標籤都具有唯一的它可以添加一些東西給它,使它獨一無二,但是所以jquery仍然知道它落在選擇器分支下面或者爲每個id標籤添加一個不同的數字

1

您的選擇器需要在css class $ (「.comment」)而不是id $(「#comment」)。

0

我居然固定我自己的問題......

它不能正常工作開了第二個評論框的時候被我忘了,你用的字符鍵入一個唯一的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 %>'); 
    }) 
}); 
0

你會發現SO採用獨特的ID的形式,像這樣:

<form class="post-comments" id="form-comments-459429"> 

..我在我已經創建了一個上傳控件使用類似的方法。我可以將上傳控件多次渲染到頁面上,並通過ajax從局部視圖渲染它 - 每次創建視圖時,表單都被分配了一個唯一的ID,並且jQuery腳本隨之附帶,因此,就您的情況而言,它可能會看起來像這樣:

$('#comment-1234') 

..這樣,每個jQuery腳本只適用於它'附加'的特定形式。

相關問題