0

Web ページの最後にある [保存] ボタン用の検証グループの下に、datepicker とカスタム バリデーターを含むテキスト ボックスがあります。問題は、このテキスト ボックスの値の変更ではなく、保存時に 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>

これにより、datepicker 値が選択されたときに、コントロールの onChange イベントが発生します。この例では、実際の jQueryUI 日付ピッカーを使用しています。これは、使用している CalendarPicker よりもはるかに優れており、使いやすいでしょう。

于 2012-10-15T13:26:58.620 に答える