Javascript 基于另一个选择框的输入禁用选择框

Javascript 基于另一个选择框的输入禁用选择框,javascript,jquery,html,Javascript,Jquery,Html,我想在另一个选择框==1时禁用一个选择框,反之亦然。我知道如何使用ID来实现这一点,但最棘手的是,我试图针对的选择框的ID和名称是由php动态生成的。因此,我需要能够以select元素为目标,而不使用其中唯一的数字。在此之前,我尝试过一些方法,比如“:contains”或“:input”选择器通过tr将其缩小,但没有效果,因此我使用了通配符,但仍然无法使其工作。我对jQuery相当陌生,所以这可能只是一个简单的语法错误 var update\u tickets=函数(){ if($(“选择[i

我想在另一个选择框==1时禁用一个选择框,反之亦然。我知道如何使用ID来实现这一点,但最棘手的是,我试图针对的选择框的ID和名称是由php动态生成的。因此,我需要能够以select元素为目标,而不使用其中唯一的数字。在此之前,我尝试过一些方法,比如“:contains”或“:input”选择器通过tr将其缩小,但没有效果,因此我使用了通配符,但仍然无法使其工作。我对jQuery相当陌生,所以这可能只是一个简单的语法错误

var update\u tickets=函数(){
if($(“选择[id$='Online']”)。selectedIndex==“1”){
$(“选择[id$='On-site']”)prop('disabled',true);
}else if($(“选择[id$='On-site']”)。selectedIndex==“1”){
$(“选择[id$='Online']”)prop('disabled',true);
}否则{
$(“选择[id$='Online']”)prop('disabled',false);
$(“选择[id$='On-site']”)prop('disabled',false);
}
};
$(更新门票);
$(“选择[id$='On-site'])。更改(更新票据);
$(“选择[id$='Online'])。更改(更新票证)

位置
价格
空间
现场报名
$50.00
0
1.
网上注册
$50.00
0
1.
试试这个:

$('body').on('change', 'select[id$="On-site"]', update_tickets);
$('body').on('change', 'select[id$="Online"]', update_tickets);

您试图使用
selectedIndex
来获取
select
元素的值,但这是一种香草JS,它在DOM节点上工作,而不是在jQuery选择器上工作,并且不返回字符串(仅返回索引)。(正确的访问方式是
$('select')[0]。selectedIndex

而是使用
.val()
使用jQuery返回输入/选择元素的字符串值

这里有一个固定的演示:

var update\u tickets=函数(){
如果($(“选择[id$='Online'])。val()=“1”){
$(“选择[id$='On-site']”)prop('disabled',true);
}else if($(“选择[id$='On-site'])。val()==“1”){
$(“选择[id$='Online']”)prop('disabled',true);
}否则{
$(“选择[id$='Online']”)prop('disabled',false);
$(“选择[id$='On-site']”)prop('disabled',false);
}
};
$(更新门票);
$(“选择[id$='On-site'])。更改(更新票据);
$(“选择[id$='Online'])。更改(更新票证)

位置
价格
空间
现场报名
$50.00
0
1.
网上注册
$50.00
0
1.

在OP的示例中,
change
事件触发时没有出现问题。@JonUleis我读到“动态”,我认为它还没有实例化,但它是php。。。你可能是对的。Logan可能会想检查值,但如果他想使用索引,我建议使用“selectedIndex”,使用类似于:
$(“#”select[id$=“Online”]')。prop('selectedIndex')==1
,其中1是索引,而不是值!