1

以下のようにLimitというJqueryプラグインを使用しています

    $(document).ready(
    function () {
        $('[id$=Textarea1]').limit('150', '#charsLeft');
    });

関連するASPXセクション、

<td align="left" valign="top">
    <textarea id="Textarea1" class ="limit" runat="server" rows="4" cols="30" style="resize: none;
        background-color: #F9E8EC; font-family: 'Times New Roman', Times, serif;" ></textarea>
    <br />
    You have <span id="charsLeft">160</span> chars left.
</td>

上記の両方のコントロールは更新パネル内にあります。最初に、この制限機能が正常に機能していることがわかります。ただし、更新パネルの更新されたスパンは160文字を示し、テキスト領域に入力しても更新されません。この問題を修正するにはどうすればよいですか?

4

3 に答える 3

2

問題は更新パネルで、document readyうまく再生されません。基本的に、更新パネルはページ上のすべてのコンテンツを置き換えますが、document既にreadyであるため、イベントが再トリガーされることはありません。

やりたいことは、document readyイベントを別の関数に移動し、ドキュメントの準備ができているときと、更新パネル内で更新が発生したときの両方で、次のように呼び出すことです。

function onDocumentReady()
{
    $('[id$=Textarea1]').limit('150', '#charsLeft');
}

// this will get called on the first load
$(function()
{
    onDocumentReady();
});

// this will get called when an update panel request finishes
var pageRequestManager = Sys.WebForms.PageRequestManager.getInstance(); 
pageRequestManager.add_endRequest(onDocumentReady);

あるいは (未テスト)

できることは、更新パネルがリロードreadyされたときにイベントをトリガーすることです。これを試すことができます。document

// this will get called on the first load
$(function()
{
    $('[id$=Textarea1]').limit('150', '#charsLeft');
});

// this will get called when an update panel request finishes, triggering the dom ready
var pageRequestManager = Sys.WebForms.PageRequestManager.getInstance(); 
pageRequestManager.add_endRequest(function()
{
    $(document).trigger('ready');
});
于 2012-07-11T10:43:59.810 に答える
0

Damith 私はあなたのコードを試してみましたが、私にとってはまったく問題なく動作しています。エラーが発生していますか?

以下は私が使用しているHTMLコードで、JavaScriptはあなたが持っているものと同じです。

<form id="form1" runat="server">
 <asp:ScriptManager runat="server" />
 <asp:UpdatePanel ID="upd1" runat="server">
   <ContentTemplate>    
     <textarea id="Textarea1" class ="limit" runat="server" rows="4" cols="30"      style="resize: none; background-color: #F9E8EC; font-family: 'Times New Roman', Times, serif;" ></textarea>
<br />
 You have <span id="charsLeft">160</span> chars left.
<asp:Button ID="btnTest" runat="server" Text="Test" />
</ContentTemplate>

それが役立つことを願っています!

于 2012-07-11T10:34:45.910 に答える
0

スパンを空のままにしておく必要があると思います。jQuery プラグインはそれ自体を埋めます。

于 2012-07-11T10:27:48.547 に答える