Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用If语句更改函数_Javascript_Jquery - Fatal编程技术网

Javascript 使用If语句更改函数

Javascript 使用If语句更改函数,javascript,jquery,Javascript,Jquery,我还有另外一个问题,因为我对javascript和jQuery还是新手。我正在使用Ajax更新一个带有值的隐藏字段。Ajax在选择一个办公室(在一个状态下可以有多个办公室)后,将发送回正确的计费域(服务提供的状态) 下面是我正在努力解决的jQuery 我使用这一部分来确保在下拉选择之前,在页面加载时隐藏或显示BillingDomainID1类。这很有效 if($("#BillingDomainID").val() != 1){ $(".BillingDomainID1").hid

我还有另外一个问题,因为我对javascript和jQuery还是新手。我正在使用Ajax更新一个带有值的隐藏字段。Ajax在选择一个办公室(在一个状态下可以有多个办公室)后,将发送回正确的计费域(服务提供的状态)

下面是我正在努力解决的jQuery

我使用这一部分来确保在下拉选择之前,在页面加载时隐藏或显示BillingDomainID1类。这很有效

if($("#BillingDomainID").val() != 1){
        $(".BillingDomainID1").hide();
    } else {
        $(".BillingDomainID1").show();   
};
这是我遇到麻烦的地方。getOfficeInfo部分是完美的,因为它确实按照预期发布了BillingDomainID值,但是下面的If语句要求我在If语句工作之前单击OfficeID下拉列表值两次。 为了好玩,我在getOfficeInfo和if语句之间添加了一个警报(“hi”),它使if语句工作。似乎getOfficeInfo部分更新值的速度不够快,if语句无法正常工作。我能做些什么来解决这个问题

    $("#OfficeID").change(function() {  

        getOfficeInfo($("#OfficeID").val(),$("#BillingDomainID")); 

        if ($('#BillingDomainID').val() != 1) {
            $('.BillingDomainID1').hide();
            return;
        } else {
            $('.BillingDomainID1').show()
        }

    });

非常感谢你们的帮助

只是一种怀疑,但是您是否在
getOfficeInfo
函数中调用ajax

如果是这样,那么很可能是异步调用,这样它就不会等待服务器响应,并且
If
语句在值更新之前执行得太快

你应该把这个密码

    if ($('#BillingDomainID').val() != 1) {
        $('.BillingDomainID1').hide();
        return;
    } else {
        $('.BillingDomainID1').show()
    }
在ajax on success处理程序中

因此,您的
getOfficeInfo
函数可能如下所示

function getOfficeInfo(OID, BDID) { 
    //alert(OID); 
    //alert(BDID); 
    $.post("/UserControls/getOfficeInfo.asp", {OfficeID: OID}, function(data) {
        BDID.val(data); 
        if (data != 1) {
            $('.BillingDomainID1').hide();
        } else {
            $('.BillingDomainID1').show()
        }
    }); 
    //alert(data);
}

对此更改的解释是,当您调用
$.post(…)
时,此函数立即返回,但内部函数
函数(数据){…}
在服务器响应您的请求后被调用。因此,所有依赖于服务器响应的调用都应该在该函数中,以确保您拥有当前数据。

只是一个怀疑,但您是否在
getOfficeInfo
函数中调用ajax

如果是这样,那么很可能是异步调用,这样它就不会等待服务器响应,并且
If
语句在值更新之前执行得太快

你应该把这个密码

    if ($('#BillingDomainID').val() != 1) {
        $('.BillingDomainID1').hide();
        return;
    } else {
        $('.BillingDomainID1').show()
    }
在ajax on success处理程序中

因此,您的
getOfficeInfo
函数可能如下所示

function getOfficeInfo(OID, BDID) { 
    //alert(OID); 
    //alert(BDID); 
    $.post("/UserControls/getOfficeInfo.asp", {OfficeID: OID}, function(data) {
        BDID.val(data); 
        if (data != 1) {
            $('.BillingDomainID1').hide();
        } else {
            $('.BillingDomainID1').show()
        }
    }); 
    //alert(data);
}

对此更改的解释是,当您调用
$.post(…)
时,此函数立即返回,但内部函数
函数(数据){…}
在服务器响应您的请求后被调用。因此,依赖于服务器响应的所有调用都应该在该函数中,以确保您拥有当前数据。

在您的行中
getOfficeInfo($(“#OfficeID”).val(),$(“#BillingDomainID”)
你确定
$(“#BillingDomainID”)
吗,也许
$(“#BillingDomainID”)。val()
不需要吗@Kyle Logan Wrayyou可以尝试对if语句强制延迟,例如200毫秒:
setTimeout(function(){if($('BillingDomainID').val()…},200)
嘿,伙计们,@simon,我以前试过,但我看不出有什么明显的区别。我不能确定,但我不确定这是否就是这个案例中的问题。@mjr,我尝试了你们的建议,我想出了这个,$(“#OfficeID”).change(function(){getOfficeInfo($(“#OfficeID”).val(),$(“#BillingDomainID”));setTimeout(函数(){if($('.'BillingDomainID').val()!=1){$('.BillingDomainID1').css('display','none')};else{$('.BillingDomainID1').show()},200);});我做错了什么吗?我想你把一些分号弄错了,但仔细检查一下,这就是我的意思。为什么,它什么都没做?在你的行中
getOfficeInfo($(“#OfficeID”).val(),$(“#BillingDomainID”);
你确定
$(“#BillingDomainID”)
,可能
$(“#BillingDomainID”).val()
is need no?@Kyle Logan Wrayyou可以尝试在if语句上强制延迟,例如200毫秒:
setTimeout(function(){if($('BillingDomainID').val()…},200)
嘿,伙计们,@simon,我以前试过,但我看不出有什么明显的区别。我不能确定,但我不确定这是否就是这个案例中的问题。@mjr,我尝试了你们的建议,我想出了这个,$(“#OfficeID”).change(function(){getOfficeInfo($(“#OfficeID”).val(),$(“#BillingDomainID”));setTimeout(函数(){if($('.'BillingDomainID').val()!=1){$('.BillingDomainID1').css('display','none')};else{$('.BillingDomainID1').show()},200);});我做错了什么吗?我想你把一些分号弄错了,但是仔细检查一下,这就是我的意思。为什么,它没有任何作用吗?我不熟悉你告诉我的内容,所以如果可能的话,我非常希望能举个例子……这是ajax函数。函数getOfficeInfo(OID,BDID){//alert(OID);//警报(BDID);$.post(“/UserControls/getOfficeInfo.asp”,{OfficeID:OID},函数(数据){BDID.val(数据);});//警报(数据);}这就是我问题的答案。非常感谢您的帮助!我不熟悉您告诉我的内容,因此如果可能的话,我将非常感谢您提供一个示例…这是ajax函数。函数getOfficeInfo(OID,BDID){//alert(OID);//alert(BDID);$.post(“/UserControls/getOfficeInfo.asp”,{OfficeID:OID},函数(数据){BDID.val(数据);})//alert(数据);}这是我问题的答案。非常感谢您的帮助!