0

jQuery を使用して非表示の div を表示するポストバック後に問題が発生しています。可視性の値を隠しフィールドに保存するよう提案されましたが、いくつか問題があります。コードは次のとおりです。

<script type="text/javascript">
$(document).ready(function () {
    $(".slidingDiv").hide();
    $(".show_hide").show();
    $("goBtn").click(function () {
        $(".slidingDiv").slideToggle();
    });
    return false;
});  
</script>

<div class="create">
            <asp:TextBox ID="createTextbox" runat="server" Width="350px" Height="22px"></asp:TextBox>
            <asp:ImageButton ID="goBtn" ImageUrl="img/goBtn.gif" runat="server" BorderStyle="None" onclick="createButton_Click"/>
        </div>
 <div class="slidingDiv" runat="server">
        <asp:HiddenField ID="IsCreatePostbackVisible" runat="server" Visible="False" value="false"/>
            <asp:Literal ID="Literal1" runat="server"></asp:Literal><br />
        </div>

コードビハインド:

    protected void createButton_Click(object sender, ImageClickEventArgs e)
    {
        string randAlias = Base62Random();
        string aliasInput = createTextbox.Text;
        DateTime date = DateTime.Now;
        DateTime endDate = (DateTime.Now.AddYears(5));
        string UserID = HttpContext.Current.User.Identity.Name.ToUpper();
        string aliasType = "alias";
        if (aliasInput == "")
        {
            ClientScript.RegisterClientScriptBlock(GetType(), "Javascript", "<script>alert('You must enter a valid URL')</script>");
        }
        else
        {
            Literal1.Text = "<a href=http://go/" + randAlias + ">go/" + randAlias;
        }


        using (DataClasses1DataContext dc1 = new DataClasses1DataContext())
        {
            tblData tblData = new tblData();
            tblData.ALIAS_ID = randAlias;
            tblData.URL = aliasInput;
            tblData.START = date;
            tblData.END = endDate;
            tblData.USER = UserID;
            tblData.TYPE = aliasType;
            dc1.tblDatas.InsertOnSubmit(tblData);
            dc1.SubmitChanges();
        }
    }
4

2 に答える 2

0

これが私が最終的に得た答えです:

<script type="text/javascript">
    $(document).ready(function () {
    $(".slidingDiv").hide();
    $(".show_hide").show();
    $("#goBtn").click(function () {
        $(".slidingDiv").slideToggle();
    })
    if (isPostBack){$(".slidingDiv").show();}
});  
</script>

コードビハインド:

    protected void Page_Load(object sender, EventArgs e)
    {
        if (IsPostBack)
        {ClientScript.RegisterClientScriptBlock(GetType(), "IsPostBack", "var isPostBack = true;", true);}
        else 
        {ClientScript.RegisterClientScriptBlock(GetType(), "IsPostBack", "var isPostBack = false;", true);}
    }
于 2012-11-06T18:21:37.537 に答える
0

クリック イベントをボタンに「再登録」する必要がある場合があります。

過去に非表示とポストバックで同様の問題が発生しました。

関数を定義する場合:

 function ClickListener() {
    $("#goBtn").click(function () {
            $(".slidingDiv").slideToggle();
            ClickListener();
        });
    }

その後、うまくいけば、それは複数回機能します。

編集: document.read() を document.live() に変更すると問題が解決する同様の問題も発生しました。ここを参照してください: live() と ready() の jQuery の違いは?

于 2012-11-06T16:54:35.137 に答える