Put all the code you want executed after the post is complete into the
callback function.

or

Change chkmail function to call a new function (with the password and
email checks) instead of returning emailerror.

Paul

On Nov 27, 4:12 pm, QuadCom <[EMAIL PROTECTED]> wrote:
> I may have titled this wrong but that is the best description I could
> think of being a newbie.
>
> I have a function the inside calls another function. What I need to
> have happen is for the calling function to wait for a response from
> the called function but that is not what is happening. The calling
> function goes right on processing the rest of the script which of
> course errors out because the required vars are not set properly yet.
>
> Here is some code....
>
> var chkmail = function(data){
>         if (data.exists == 1){
>                 $('#emailerror').show();
>                 var emailerror = 1;
>         }
>         else{
>                 $('#emailerror').hide();
>                 var olde = $('#editaemail').val();
>                 var emailerror = 0;
>         }
>
>         return emailerror;
>
> }
>
> //This is the pre submit function for the Jquery form plugin
> function presub(){
>         \\get the new email address entered in the form
>         newe = $('#editaemail').val();
>
>         \\set the url var so IE won't cache the ajax call
>         url = '/myaccount/process.cfm?t=' + new  Date().getTime();
>
>         \\password change test vars
>         p1 = $('#editapassword1').val();
>         p2 = $('#editapassword2').val();
>
>         \\default error state vars set to 0
>         emailerror = 0;
>         passworderror = 0;
>
>         \\UI update to notify client
>         $('#editasave').attr("disabled","disabled").attr("value","One
> Moment");
>
>        \\Test old email (set at doc.ready) to new email to see if they
> are different
>        if(olde != newe){
>                 \\send new email through post to search DB for existing
>                 \\returns JSON either {"exists":"1"} or {"exists":"0"}
>                 \\callback set to fire chkmail()
>                 $.post(url, {checkname: newe}, chkmail, "json");
>         }
>
>         \\Check password fields to see if they are the same
>         if (p1 != p2){
>                 $('#passerror').show();
>                 passworderror = 1;
>         }
>         else{
>                 $('#passerror').hide();
>         }
>         if(emailerror == 0 && passworderror == 0) {
>                 return true;
>         }
>         else{
>                 $('#editasave').removeAttr("disabled").attr("value","Save
> Changes");
>                 return false;
>         }
>
> }
>
> After the $.post functions callback is triggered the script continues
> on to the password checks and since the $.post function hasn't
> received a response yet, the system doesn't catch the errors with the
> email address.
>
> I'm sure there is a more robust way of doing this but as I said
> earlier, I am a newbie to JS and learning as I go.
>
> Any help would be appreciated.

Reply via email to