Onblur in maskedTextBox

7 posts, 1 answers
  1. Bruno
    Bruno avatar
    20 posts
    Member since:
    Feb 2012

    Posted 29 Mar 2012 Link to this post

    I have a maskedTextbox with 2 events, onblur client side and OnTextChanged in server side.
    My on blur method are returning true or false, if my return is true, i wanna enter in server side and do OnTextChanged, if return is false doesnt enter on server side and show a alert. 
    My problem is, my return can be true or false, doesnt make anything different, always enter in server side.

    function verificarCPF() {
        var contador;
        var valorCPF = $telerik.findMaskedTextBox("txtBuscaCpf").get_value();
        var numeroCPF = valorCPF.substr(0, 9);
        var digitoCPF = valorCPF.substr(9, 2);
        var d1 = 0;
     
        for (contador = 0; contador < 9; contador++) {
            d1 += numeroCPF.charAt(contador) * (10 - contador);
        }
        if (d1 == 0) {
            radalert("CPF Inválido!",350,140,"Mensagem",null,null);
            return false;
        }
        d1 = 11 - (d1 % 11);
        if (d1 > 9) d1 = 0;
        if (digitoCPF.charAt(0) != d1) {
            radalert("CPF Inválido!", 350, 140, "Mensagem", null, null);
            return false;
        }
     
        d1 *= 2;
        for (contador = 0; contador < 9; contador++) {
            d1 += numeroCPF.charAt(contador) * (11 - contador);
        }
        d1 = 11 - (d1 % 11);
        if (d1 > 9) d1 = 0;
        if (digitoCPF.charAt(1) != d1) {
            radalert("CPF Inválido!", 350, 140, "Mensagem", null, null);
            return false;
        }
        return true;
        //radalert("CPF Válido!", 350, 140, "Mensagem", null, null);
    }

    <telerik:RadMaskedTextBox ID="txtBuscaCpf" ClientEvents-OnBlur="verificarCPF" AutoPostBack="true" runat="server" Mask="###.###.###-##"
        Width="100" OnTextChanged="txtBuscaCpf_TextChanged" />

    Thankz in advance!
  2. Bruno
    Bruno avatar
    20 posts
    Member since:
    Feb 2012

    Posted 29 Mar 2012 Link to this post

    As i sya, my return can be true or false, ALWAYS return true, and go to server side.
    help please!
  3. UI for ASP.NET Ajax is Ready for VS 2017
  4. Vasil
    Admin
    Vasil avatar
    1547 posts

    Posted 30 Mar 2012 Link to this post

    Hello Bruno,

    The OnBlur can not be cancelled and indeed there is no difference what you will return. As a workaround you could handle the client OnValueChanging event and to cancel it. In the same time also handle the OnBlur and just Focus back the element if needed.

    All the best,
    Vasil
    the Telerik team
    If you want to get updates on new releases, tips and tricks and sneak peeks at our product labs directly from the developers working on the RadControls for ASP.NET AJAX, subscribe to their blog feed now.
  5. Bruno
    Bruno avatar
    20 posts
    Member since:
    Feb 2012

    Posted 30 Mar 2012 Link to this post

    But i dont wanna cancel the OnBlur event, i wann the onblur work as all javascript should work. if return false, doesnt enter in TextChanged Event, if true, enter. its simple
  6. Answer
    Vasil
    Admin
    Vasil avatar
    1547 posts

    Posted 30 Mar 2012 Link to this post

    Hello Bruno,

    Then in your code instead of returning false, change the auto post back of your input in order to prevent the PostBack.
    $find("txtBuscaCpf").set_autoPostBack(false);


    Greetings,
    Vasil
    the Telerik team
    If you want to get updates on new releases, tips and tricks and sneak peeks at our product labs directly from the developers working on the RadControls for ASP.NET AJAX, subscribe to their blog feed now.
  7. Bruno
    Bruno avatar
    20 posts
    Member since:
    Feb 2012

    Posted 30 Mar 2012 Link to this post

    Thankz bro, this code works perfectly!

    But can you explain, why the false return doesnt work? Because, before i start to work with telerik, i was using the asp.net controls, in then, when i was need to do something like that, i do something like OnClientClick"If method() != true; return false" < just example.
    In telerik, i try that without success, and the return just false, doesnt work. I will always have to set postback false, when i wanna a behavior like this ?
  8. Vasil
    Admin
    Vasil avatar
    1547 posts

    Posted 02 Apr 2012 Link to this post

    Hi Bruno,

    There several reasons that we took this design decision for our client events.

    With "return false" you could prevent the default action of the HTML DOM Event. However the client side events of RadControls are not HTML DOM Events.
    In the event that can be canceled we are passing arguments that inherit Sys.CancelEventArgs clss, that supports the set_cancel function.
    Then in our code we are checking if the event is canceled, and we are not checking what is the return value of the handler. This is more flexible design, when it comes to write a complex solution. And here are few examples:

    The code in the handler after canceling it will still be executed if you like:
    function example1Handler(sender, eventArgs)
    {
           //...
           //perform some logic here
           //...
     
            eventArgs.set_cancel(true);
     
           //...
           //code in this section will still be executed
     
            return;
     
           //... use return if you want to return your function, regardless if you want to cancel the event
           //code after the return will not be executed.
    }

    You can reconsider your decision of canceling the event.
    function example2handler(sender, args)
    {
          if (some_condition)
          {
               args.set_cancel(true);
          }
          //perform some more logic here
         if (yet_another_condition)
         {
               args.set_cancel(false);
         }
    }

    You can pass the args to other functions and easily track and change the canceling of the event:
    function example3handler(sender, args)
    {
          if (some_condition)
          {
             example1handler(sender, args);
          }
          else
          {
             example2handler(sender, args);
          }
         if (another_condition || args.get_cancel())
         {
             args.set_cancel(false);        
         }
    }


    Greetings,
    Vasil
    the Telerik team
    If you want to get updates on new releases, tips and tricks and sneak peeks at our product labs directly from the developers working on the RadControls for ASP.NET AJAX, subscribe to their blog feed now.
Back to Top
UI for ASP.NET Ajax is Ready for VS 2017