0

リピーターがあり、このリピーターの中に UpdatePanel があります。この UpdatePanel には非表示の があり、Repeater_ItemCommand イベントに表示したいと考えています。私はこれを理解するのに苦労しています.私はJquery-guruではありません.. Firebug-consoleでは、次のように書かれています: ReferenceError: showError is not defined

これは UpdatePanel です (div #errorMessage は一番下にあります):

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
                    <ContentTemplate>
                        <%# GetComments (DataBinder.Eval(Container, "DataItem.id")) %>
                        <div class="contact_form">
                            <ul>
                                <li>
                                    <h2>Skriv en kommentar til oss!</h2>
                                </li>
                                <li>
                                    <asp:TextBox ID="txtName" runat="server" CssClass="txtBox" placeholder="Ditt navn" />                                                                                                                                                        
                                    <span class="form_hint">Ditt navn skal stå her</span>
                                </li>
                                <li>
                                    <asp:TextBox ID="txtCaptcha" runat="server" CssClass="txtBox" placeholder="Skriv resultatet av 10 pluss 6 her" />                                                                            
                                    <span class="form_hint">Du klarer vel å regne ut 10+6? :-)</span>
                                </li>
                                <li>
                                    <asp:TextBox ID="txtComment" runat="server" TextMode="MultiLine" placeholder="Din kommentar"  />                                                                            
                                </li>                                                                        
                                <li>
                                    <asp:Button ID="cmdSaveComment" CssClass="button" runat="server" CommandName="SaveComment" CommandArgument='<%# Eval("id")%>' Text="Puliser kommentar" />
                                </li>                                                                        
                            </ul>
                            <div id="#errorMessage<%# Eval("id") %>" style="display:none;">
                                <p>Du må skrive resultatet av 10+6 i boksen for å få publisert kommentaren</p>
                            </div>
                        </div>
                    </ContentTemplate>
                </asp:UpdatePanel>

私の .js ファイルでは、この関数を作成しました:

$(document).ready(function showError (divId) {
        $id = divId;
        $("#errorMessage" + $id + '').show("slide");        
        return false;    
});

そして、コードビハインドで、これをトリガーしたい場所:

protected void RepeaterBlog_ItemCommand(Object Sender, RepeaterCommandEventArgs e)
        {            
            if (e.CommandName == "SaveComment")
            {
                int blogID = Int32.Parse(e.CommandArgument.ToString());
                string name = ((TextBox)e.Item.FindControl("txtName")).Text;
                string comment = ((TextBox)e.Item.FindControl("txtComment")).Text;
                string captcha = ((TextBox)e.Item.FindControl("txtCaptcha")).Text;

                if (captcha == "16")
                {
                    if (name == "")
                    {
                        name = "Anonym";
                    }
                    name = name.Replace("'", "&#39;");
                    comment = comment.Replace("'", "&#39;");
                    dh.NewComment(name, comment, blogID);
                    GetItems();
                }
                else
                {
                    //show error box
                    string js = "$(document).ready(function () { showError('" + blogID.ToString() + "'); });";
                    ScriptManager.RegisterStartupScript(this, GetType(), blogID.ToString(), js, true);

                    //string js = "$(document).ready(function () {$(document).on('show', function() { $('#errorMessage" + blogID.ToString() + "').show('slide');return false;})});";
                    //ScriptManager.RegisterStartupScript(this, this.GetType(), blogID.ToString(), js, true);

                }             
            }            
        }

誰かが私が間違っていることを理解するのを手伝ってもらえますか?

4

1 に答える 1

1

$(document).ready(...ラッパーを使用する必要はありません。これは、すべてのページ要素がロードされた後に JavaScript を実行するために使用されますが、必要な場合はこれを削除して、直接の JavaScript 関数呼び出しを使用するだけです。

あなたのjsファイル:

function showError (divId) {
        $id = divId;
        $("#errorMessage" + $id + '').show("slide");        
        return false;    
}

あなたの .Net コード

////
else
{
    //show error box
    string js = "showError('" + blogID.ToString() + "');";
    ScriptManager.RegisterStartupScript(this, GetType(), blogID.ToString(), js, true);
}
////      

また、errorMessage div では、ID にハッシュタグを含めないでください。jquery 呼び出しでは、ID 要素を参照していることを示すためにこれを使用しますが、これは ID 割り当ての一部であってはなりません。

<div id="errorMessage<%# Eval("id") %>" style="display:none;">
    <p>Du må skrive resultatet av 10+6 i boksen for å få publisert kommentaren</p>
</div>
于 2013-04-25T23:10:11.727 に答える