如何使用jquery在回调函数中设置变量?

时间:2014-01-23 12:14:51

标签: jquery scope form-submit jquery-callback

你好可能以前曾经问过这个问题,但是如果有人帮助我解决我的问题会很明显:​​

我在js函数上创建并在表单提交事件

上调用它

这是js功能代码:

 function checkAdd()
 {
    var ipad = $('#ipad').val();
var iphone = $('#iphone').val();

var url = /(http|ftp|https):\/\/[\w-]+(\.[\w-]+)+([\w.,@?^=%&:\/~+#-]*[\w@?^=%&\/~+#-])?/;

var flag=true;
    var iph_check = true;
var ipad_check = true;

if(ipad.length==0)
{
      $('#ipad').css('border','1px solid red');
      $('#spaniPad').html('Please enter iPad image URL');
  flag=false;
}
else
   {
         if (url.test(ipad))
    {
              var flag1 = 0; 
              $("<img/>").attr("src", ipad).load(function(e1)
                    {
                       e1.preventDefault();
               var   s = {w:this.width, h:this.height};
                         if(s.w<1536) flag1=1;
              if(s.h<2048) flag1=1;
                           if(flag1==1)
                            {
                          $('#ipad').css('border','1px solid red');
              $('#spaniPad').html('Please upload IPad Image with    dimensions[w*h] (1536 * 2048) px<br><br>'); 
                          ipad_check=false;
                              alert('ipad='+ipad_check); //here its showing false

            }
            else
              {
                $('#ipad').css('border','');  
                $('#spaniPad').html('');

              }

            }); 
    }
    else
    {
      //$('#ipad').val('');
        $('#ipad').css('border', '1px solid red');
        $('#spaniPad').html('Please enter valid iPad image URL');
       flag = false;
    }
}

     if(iphone.length==0)
  {
    $('#iphone').css('border','1px solid red');
    $('#spaniPhone').html('Please enter iPhone image URL');
    flag=false;
  }
  else
     {
       if (url.test(iphone))
    {
      var flag2 = 0;
      $("<img/>").attr("src", iphone).load(function(e)
                               {
                 e.preventDefault();
                 var s1 = {w:this.width, h:this.height};
                 if(s1.w<640) flag2=1;
                 if(s1.h<1136) flag2=1;
                 if(flag2==1)
                {
                  $('#iphone').css('border','1px solid red');
                  $('#spaniPhone').html('Please upload IPhone Image with dimensions[w*h] (640 * 1136) px'); 
                iph_check=false;
                    alert('iphone='+iph_check); //here its showing false
                }
                     else
                   {
                     $('#iphone').css('border','');  
                     $('#spaniPhone').html('');     
                   } 
                   });  
    }
    else
     {
       //$('#iphone').val('');
         $('#iphone').css('border', '1px solid red');
         $('#spaniPhone').html('Please enter valid iPhone image URL');
         flag = false;
     }
}
alert(ipad_check);  //here its showing true (default value)
    alert(iph_check);  //here its showing true (default value)
if(flag==true && ipad_check==true && iph_check==true)  alert('success'); 
else  alert('failure');
}

这里当我在回调函数load()内部发出警报时,它显示正确的值,但是当我在回调函数之外发出相同变量的警报时,它没有显示并显示默认值。

我已经尝试过会话,cookie和隐藏输入来实现这一点,但仍然没有得到任何解决方案。

我想要ipad_check和iph_check值以检查表单中是否有任何验证错误?并根据提交表格的需要。

但是在这个现有案例中,每次我都会变得正确,甚至验证也会发生。

请看看这个jfiddle:

http://jsfiddle.net/kalpanadixit/5uXDJ/4/

在这个小提琴中,它显示成功甚至ipad和iphone消息都是假的。

如果有人对此问题有任何疑问,请帮帮我。

提前致谢。

0 个答案:

没有答案