Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Custom validator fires but does not prevent postback

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;
        }
    });
});
like image 451
Hoppe Avatar asked Nov 17 '11 16:11

Hoppe


4 Answers

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;
like image 157
Kelsey Avatar answered Oct 13 '22 09:10

Kelsey


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.

like image 32
Shalini Avatar answered Oct 13 '22 09:10

Shalini


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.

like image 33
James Love Avatar answered Oct 13 '22 09:10

James Love


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.

like image 31
Richard Avatar answered Oct 13 '22 09:10

Richard