如果文本框中的值无效,则阻止AsyncPostBackTrigger

本文关键字:AsyncPostBackTrigger 无效 文本 如果 | 更新日期: 2023-09-27 18:01:45

我的触发器中有以下代码:

<asp:AsyncPostBackTrigger ControlID="InitPay" EventName="TextChanged" />

而我的控件看起来像:

    <label class="ccsp">Initial Payment</label><br />
    <asp:TextBox ID="InitPay"  AutoPostBack="true" runat="server" OnTextChanged="InitPay_TextChanged" Style="width: 300px;">
    </asp:TextBox><b>$</b><br /> 
    <asp:CustomValidator ID="ValInitPay" ControlToValidate="InitPay" runat="server" ClientValidationFunction="Val_InitPay" OnServerValidate="ValInitPay_ServerValidate" ErrorMessage="Out of range error." Display="Dynamic"></asp:CustomValidator>

Jquery validate function:

function Val_InitPay(source, args) {
        if (Math.floor($('#InitPay').val()) == ($('#InitPay').val()) && $.isNumeric($('#InitPay').val())) {
            if ($('#InitPay').val() > ($("#InitPaymnet").val()) && $('#InitPay').val() < 1000)
            {
                args.IsValid = true;
            }
            else {
                args.IsValid = false;
            }
        }
        else {
            args.IsValid = false;
        }
    }

而validate函数后面的代码是:

protected void ValInitPay_ServerValidate(object source, ServerValidateEventArgs args)
    {
            if (int.TryParse(InitPay.Text, out val))
            {
                if (val > 10 && val < 1000)
                {
                    args.IsValid = true;
                }
                else
                {
                    args.IsValid = false;
                    ValInitPay.ErrorMessage = "<img  src='images/err_msg.png' height='11px' width='11px' style='vertial-align:middle' />Out of range";
                }
            }
            else
            {
                args.IsValid = false;
                ValInitPay.ErrorMessage = "<img  src='images/err_msg.png' height='11px' width='11px' style='vertial-align:middle' />Not an integer";
            }
    }

现在,当我在文本框中输入无效时,它会迅速触发触发器函数。它给出了错误,但随后触发了触发器。当值无效时,是否有一种方法可以停止触发器?

谢谢!

如果文本框中的值无效,则阻止AsyncPostBackTrigger

如果你只使用jQuery的e.p preventdefault()函数在所有的代码路径中,我们可以确保输入是无效的,我们可以停止服务器故障。代码看起来像这样

function Val_InitPay(source, args) {
    if (Math.floor($('#InitPay').val()) == ($('#InitPay').val()) && $.isNumeric($('#InitPay').val())) {
        if ($('#InitPay').val() > ($("#InitPaymnet").val()) && $('#InitPay').val() < 1000)
        {
            args.IsValid = true;
        }
        else {
            args.IsValid = false;
            e.preventdefault()
        }
    }
    else {
        args.IsValid = false;
        e.preventdefault()
    }
}
相关文章:
  • 没有找到相关文章