2014-03-26 50 views
0

我的asp表單中有一個JQuery Datepicker。asp.net中的常規字段驗證器和JQuery日期選取器

$(function() { 
      $("#datepicker").datepicker(); 
     }); 

<tr> 
    <td>Join Date 
     </td> 
     <td> 
      <input type="text" id="datepicker" class="box" /> 
      <asp:RequiredFieldValidator ID="rfvdatepicker" runat="server" ErrorMessage="Please Select a Join Date." ControlToValidate="datepicker" Enabled="false" Display="Dynamic"></asp:RequiredFieldValidator> 
      </td> 
</tr> 

我收到此錯誤 「無法找到控制ID‘日期選擇器’由‘rfvdatepicker’的‘的ControlToValidate’屬性引用」。

請幫助我如何使用RegularFieldValidator 也驗證使用的RegularExpressionValidator

+0

您需要使用'runat = server'將輸入更改爲一個asp.net控件。請記住,id會被運行時所破壞,因此請通過jQuery類而不是id來選擇它。 – RobH

回答

0

你所得到的錯誤,因爲該控件不具有「切斷」的ID,這意味着它只能存在於客戶端上將來的日期,以驗證JQUERY日期選擇器/瀏覽器端。您必須通過強制控件在服務器上「運行」來分配「服務器」標識,因此您必須添加由RobH在註釋中指出的runat="server"

下面是你如何能做到這一點+正則表達式的日期範圍驗證的例子:

的JavaScript:

function pageLoad(sender, args) 
{ 
    $('#myDatePicker').datetimepicker({ 
     pickTime: false, 
     pickDate: true, 
     autoclose: true 
    }); 
} 

ASPX:

<div class="form-group"> 
    <b>Join Date</b> 
    <div class='input-group date' id='myDatePicker'> 
     <asp:TextBox runat="server" ID="myJoinDatePicker" CssClass="form-control"></asp:TextBox> 
     <span class="input-group-addon"><span class="glyphicon glyphicon-clock"></span></span> 
    </div> 
</div> 

<asp:RequiredFieldValidator ID="rfvdatepicker" runat="server" 
    ErrorMessage="Please Select a Join Date." ControlToValidate="myJoinDatePicker" 
    Enabled="false" Display="Dynamic"> 
</asp:RequiredFieldValidator> 

<asp:RegularExpressionValidator ID="regJoinDate" Display="Dynamic" 
    ValidationExpression="^(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|21)\d\d$" 
    runat="server" ControlToValidate="myJoinDatePicker"> 
</asp:RegularExpressionValidator>  

<asp:RangeValidator ID="rngvJoinDate" runat="server" 
    ControlToValidate="myJoinDatePicker" 
    Type="Date" Display="Dynamic" /> 

C#代碼 - 背後:

protected void Page_Load(object sender, EventArgs e) 
{ 
    // set your min join date here 
    rngvJoinDate.MinimumValue = DateTime.MinValue.ToString("dd/MM/yyyy"); 

    // set your max join date here 
    rngvJoinDate.MaximumValue = DateTime.Today.ToString("dd/MM/yyyy"); 
} 

請讓我知道,如果你仍然得到錯誤。