从代码隐藏设置JQuery属性不会触发

时间:2015-07-31 11:47:02

标签: jquery asp.net vb.net visual-studio-2010

我正在尝试做这个问题的Best Practices - set jQuery property from Code-Behind

我的页面有以下代码:

function Initialize() {
    $("#txtFromDateF").datepicker();
    $(".needs-datepicker").datepicker({
        changeMonth: true,
        changeYear: true,
        dateFormat: 'dd-mm-yy',
        altFormat: 'yy-mm-dd',
        minDate: $("#<%= minDays . ClientID %>").val()
    });
}
$(document).ready(function () {
    Session.ResetTimer();
    Initialize();

});

在我的页面上我有一个隐藏的字段:

<asp:HiddenField ID="minDays" runat="server" Value="" />

在我的代码隐藏On Page_load:

If Not IsPostBack Then
    ' Do some stuff
End If

SetMinDays()

SetMinDays()如下所示:

Private Sub SetMinDays()
    Select Case TicketSubTypeDropDownList.SelectedItem.Value
        Case TicketSubType.ChangeFrequency
            minDays.Value = "+10d"
        Case TicketSubType.ChangeOpeningHours
            minDays.Value = "+30d"
        Case TicketSubType.ChangeCiNumber
            minDays.Value = "+20d"
        Case Else
            minDays.Value = "+0d"
    End Select
End Sub

当我在下拉列表中选择不同的TicketSubType时,我会通过SetMinDays()。但是我的屏幕没有更新日期选择器。

如何确保datepicker使用SetMinDays中指定的值?

1 个答案:

答案 0 :(得分:2)

你可以做到这一点,但有很多东西需要照顾,不要在这里无所事事,如果这个隐藏的字段不在页面中重复(嵌入式控件)做这个小黑客:

如果您使用的是asp.net 4.0或更高版本,请将客户端ID设为静态:

<asp:HiddenField ID="minDays" runat="server" ClientIDMode="Static" Value="" />

这样读:

minDate: $("#minDays").val()

<强>更新

在.aspx文件中读取服务器ID:

<script>
   var yourid= '<%= minDays.ClientID%>';
</script>

在外部js文件中使用如下:

minDate: $("#" + yourid).val();