Custom validator fires but does not prevent postba

2019-06-19 02:04发布

I've seen a lot of questions about this already, but I'm stumped! Please help!

I have a customvalidator. It's firing but it's not preventing postback. Please help me in doing so! I can see that console.log registers before the post. But, it posts back anyway. How do I prevent the postback?

I've tried adding a control to validate, and validate empty text equal to true. I also tried adding e.preventdefault, which did not work :(

How can I prevent the postback?

    <script type="text/javascript">
//<![CDATA[
function validateWhyUnlikely(source, args) {
    console.log(1);
    args.isValid = false;
}
//]]>

<asp:TextBox ID="txtWhyUnlikely" runat="server" Rows="4" cols="20"
            CssClass="surveyTextArea" />
<asp:CustomValidator runat="server" ID="cfvWhyUnlikley" ErrorMessage="Please provide a reason since you rated an item as unlikely to provide."
        CssClass="surveyError surveySmallIndent" Display="Dynamic" 
        ClientValidationFunction="validateWhyUnlikely" />
<asp:Button ID="btnSubmit" runat="server" Text="Submit" CssClass="smallSpecial" OnClick="btnSubmit_Click" />


jQuery(document).ready(function () {
    jQuery('#<%= btnSubmit.ClientID %>').click(function (e) {
        if (Page.IsValid == false) {
            console.log(false);
            e.preventDefault();
            return false;
        }
    });
});

8条回答
太酷不给撩
2楼-- · 2019-06-19 02:30

You are misssing ControlToValidate="txtWhyUnlikely"

查看更多
不美不萌又怎样
3楼-- · 2019-06-19 02:33

If it helps other people, I had a Validation group that I forgot to add the button to.

Make sure to add the button, the textbox and the validator to the same validation group for the postback to be prevented.

查看更多
叼着烟拽天下
4楼-- · 2019-06-19 02:37

I experienced this problem as well.

What I did was, in the C# procedure that was called by the button, at the top I added

if (IsValid == false)
         return;

I could not stop it performing the postback so this seemed to me like the only solution.

查看更多
小情绪 Triste *
5楼-- · 2019-06-19 02:46

I too faced this issue, I was trying to add a custom validator to a dropdownlist which had a selectedIndexChange event attached to it. After i gave incorrect value for dropdown, i was able to se ethe error message i gave in Custom Validator but immediately after it Postback was happening.

However on adding this property CausesValidation="true" to the dropdownlist control resolved my issue.

Postback wasn't happening on incorrect value after adding this property to my dropdown.

查看更多
啃猪蹄的小仙女
6楼-- · 2019-06-19 02:47

Everything looks ok althought I am not sure why you are attaching the Click function to your submit button. I would remove that and test it as it maybe be overriding the default behavior.

Also I think you need to capitalize the IsValid property:

args.IsValid = false;
查看更多
一夜七次
7楼-- · 2019-06-19 02:50

I solved this problem by creating a variable:

 Boolean fieldIsValid = true;

and at the custom validating expression I would change the value if arguments weren't true:

if(args.IsValid == false)
            {
                fieldIsValid = false;
            }
            else
            {
                fieldIsValid = true;
            }

Then, I also put that in the submit click method:

protected void submit_Click(object sender, EventArgs e)
        {
            if (fieldIsValid)
            {
                //submit my things
            }
        }
查看更多
登录 后发表回答