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