【问题标题】:textbox value changed with jquery unaccessable or outdated after postback回发后文本框值因 jquery 无法访问或已过时而更改
【发布时间】:2012-12-04 16:09:40
【问题描述】:

我有一个文本框和一个自制的日历。在日历中按下日期 div(类 .available)会触发 jquery 在文本框中输入日期,请​​参见代码:

<asp:TextBox id="hidOutboundSelectedDate" ClientIDMode="Static" runat="server" />

$(".available").click(function () {
    var selected = $(this).text();
    $("#hidOutboundSelectedDate").val(selected);
});

我按下搜索按钮,最终在方法后面输入以下代码:

public string GetSelected()
{
    var test1 = Request.Form[hidOutboundSelectedDate.UniqueID];
    var test2 = hidOutboundSelectedDate.Text;
    var test3 = FindControl("hidOutboundSelectedDate");
    // some extra code goes here
}

此时所有这 3 个版本(将调试 test3 以检查 .Text)显示相同的值,即我在日历中选择的那个。

现在开始讨论问题

我“返回”以从我的日历中选择一个新日期,文本框像一开始一样是空的。我选择一个日期,jquery 将值设置为新日期。如果我转到 Chrome 浏览器控制台并检查值是什么,我会得到正确的值作为回报。

我最终到达了“GetSelected()”方法,我的 3 个测试版本给出了以下结果:

test1 = null
test2 = old value 
test3 = old value

我做错了什么?

【问题讨论】:

    标签: c# jquery asp.net textbox postback


    【解决方案1】:

    您能否确定调用 GetSelected() 方法是在页面生命周期的哪个阶段?尝试在加载发布的数据之前读取该值将导致上述结果..

    【讨论】:

    • 嗯,这就是它的构建方式。我有一个 .aspx 页面,“经理”,带有一些文本和一个按钮,日历位于 .ascx 部分,页面上的“日历”。按下按钮会触发管理器代码隐藏中的一个方法,该方法调用日历中的 GetSelected()。
    • 原来是我这边的一个错误,有 2 个日历取决于它是新日历还是更改日历,而我的 GetSelected 只采用了新的日历值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多