2012-06-18 3 views
1

У меня есть функция общего Validation
функция проверки с возвращаемым значением

function connect_and_update_destination() { 
     var flag = true; 
     // Validate IP 
     if (!validate_ip_address()) { 
      alert(protect.lang.enter_valid_ip); 
      return; 
     } 

     if ($('#pjm_alias').val() === '') { 
      $('#pjm_alias').focus(); 
      alert(protect.lang.enter_alias); 
      return; 
     } 

     if ($('#pjm_auth_name').val() === '') { 
      $('#pjm_auth_name').focus(); 
      alert(protect.lang.enter_auth_name); 
      return; 
     } 

     if ($('#pjm_auth_password').val() === '') { 
      $('#pjm_auth_password').focus(); 
      alert(protect.lang.enter_auth_pwd); 
      return; 
     } 
     var ip = $('#pjm_ip1').val()+'.'+$('#pjm_ip2').val()+'.'+$('#pjm_ip3').val()+'.'+$('#pjm_ip4').val(); 
     return establish_connection(ip, $('#pjm_alias').val(), $('#pjm_auth_name').val(), $('#pjm_auth_password').val()); 
    } 


После успешной проверки он всегда возвращает establish_connection(), моя проблема заключается в том, что звонит этот connect_and_update_destination(), как это ,

function first_call(){ 
    connect_and_update_destination(); 
} 
function second_call(){ 
    connect_and_update_destination(); 
} 


Когда первый звонок я должен вернуться после успешной проверки establish_connection(), но когда-либо я назвал ее помощью второй функции [second_call()] он не должен возвращать establish_connection() InstEd из обратного establish_connection() я нужно только вернуться. Но как я могу это сделать, значит, я не хочу входить в connection_connection(), когда когда-либо звоню, используя second_call().

Заранее спасибо.

+0

если ур вызова на кнопку, то показать ур код кнопки –

ответ

1

Вы могли бы сделать что-то просто передавая переменную.

function connect_and_update_destination(establishConnection) { 

... 

if(!establishConnection) 
    return; 

return establish_connection(ip, $('#pjm_alias').val(), $('#pjm_auth_name').val(), $('#pjm_auth_password').val()); 
} 

function first_call(){ 
    connect_and_update_destination(true); 
} 
function second_call(){ 
    connect_and_update_destination(false); 
} 

Для более общего решения можно передать функцию обратного вызова:

function connect_and_update_destination(callback) { 

    ... 

    if(typeof callback === 'function') { 
     return callback(ip); 
    } 

    return; 
} 

function first_call() { 
    var result = connect_and_update_destination(function(ip) { 
     return establish_connection(ip, $('#pjm_alias').val(), $('#pjm_auth_name').val(), $('#pjm_auth_password').val()); 
    }); 
} 

function second_call() { 
    connect_and_update_destination(); 
} 
+0

Обратный вызов - хорошая идея. благодаря –

1

Вы можете добавить параметр функции connect_and_update_destination:

function connect_and_update_destination(establishConnection) { 
    var flag = true; 
    // Validate IP 
    if (!validate_ip_address()) { 
     alert(protect.lang.enter_valid_ip); 
     return; 
    } 

    if ($('#pjm_alias').val() === '') { 
     $('#pjm_alias').focus(); 
     alert(protect.lang.enter_alias); 
     return; 
    } 

    if ($('#pjm_auth_name').val() === '') { 
     $('#pjm_auth_name').focus(); 
     alert(protect.lang.enter_auth_name); 
     return; 
    } 

    if ($('#pjm_auth_password').val() === '') { 
     $('#pjm_auth_password').focus(); 
     alert(protect.lang.enter_auth_pwd); 
     return; 
    } 

    if (!establishConnection) { 
     return; 
    } 

    var ip = $('#pjm_ip1').val()+'.'+$('#pjm_ip2').val()+'.'+$('#pjm_ip3').val()+'.'+$('#pjm_ip4').val(); 
    return establish_connection(ip, $('#pjm_alias').val(), $('#pjm_auth_name').val(), $('#pjm_auth_password').val()); 
} 

, а затем:

function first_call() { 
    connect_and_update_destination(true); 
} 
function second_call() { 
    connect_and_update_destination(false); 
} 
+0

Проблема не solved.Because во втором называют его не проверять все подтверждение. когда когда-либо второй вызов инициирует его просто возврат из функции проверки, его не подтверждают ip-адрес и т. д. –

+2

Где вы проверяете этот адрес 'ip'? Внутри функции 'install_connection'? Если это так, вам придется передать параметр 'installConnection' этой функции, чтобы он мог проверить' ip', но не делать то, что вы не хотите. –

Смежные вопросы