0

我在验证组下有一个带有日期选择器的文本框和一个自定义验证器,用于网页末尾的保存按钮。问题是在保存时调用了 javascrip 函数,但在此文本框值更改时没有调用。我究竟做错了什么?

文本框:

<td valign="middle">
            <asp:TextBox ID="txtPassingDate" runat="server" Width="106px" Text='<%# Bind("PassingDate") %>'></asp:TextBox>
            <img style="width: 17px; height: 16px" id="IMG1" onclick="javascript:calendarPicker('ContentPlaceHolder1_txtPassingDate');"
                alt="Select Date" src="../Images/show-calendar.gif" border="0" />
        </td>

验证器:

  <asp:CustomValidator runat="server" ID="valCusRangePassingDate" ValidationGroup="Save"
                Display="Dynamic" ControlToValidate="txtPassingDate" ClientValidationFunction="CompareDateRange"
                ErrorMessage="Only last three months reimbursement is allowed" ForeColor="Red"
                Font-Bold="False"></asp:CustomValidator>

注意:还有其他自定义 vlidator JS 函数也与同一文本框相关联。当前调用我的 JS 的保存按钮:

  <asp:Button ID="Save" Text="Save" runat="server" OnClick="Save_Click" ValidationGroup="Save"
                OnClientClick="return  ConfirmSave()" />
4

2 回答 2

1

您可以在 TextBox 值更改事件中使用客户端验证检查。

function textbox_change()
{
    if(Page_ClientValidate('Save'))
    {
        //Your Code
    }
    else
    {
       //your code
    }
}

Page_ClientValidate是从客户端进行验证的功能。您可以将验证组作为参数传递。

于 2012-10-15T08:15:12.657 回答
0

问题是当您的控件由日期选择器操作时,您的 asp.net 控件看不到更改。添加此代码应该可以解决您的问题:

 <link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" ></script>
 <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/jquery-ui.min.js" ></script>

 <script type="text/javascript">
    $(document).ready(function () {
        $('.datepicker').datepicker({
            onSelect: function () {
                this.fireEvent && this.fireEvent('onchange') || $(this).change();
            }
        });
    });
 </script>


 <asp:TextBox ID="txtPassingDate" runat="server" Width="106px" CssClass="datepicker" Text='<%# Bind("PassingDate") %>'></asp:TextBox>

This will fire the onChange event of your control when the datepicker value is selected. 此示例使用实际的 jQueryUI 日期选择器,它可能比您使用的 CalendarPicker 更好、更容易使用。

于 2012-10-15T13:26:58.620 回答