1

私は一般的な検証機能を持っています

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();
}


最初の呼び出しでは、検証成功した後に戻る必要があります。しかし、どうすればこれを行うことができます

前もって感謝します。

4

2 に答える 2

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);
}
于 2012-06-18T08:02:11.867 に答える
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();
}
于 2012-06-18T08:02:12.523 に答える