如果jQuery只有一个,则禁用

我正在为客户开发一个后端,我有一些一起工作。 具体来说,我有3个选择国家,省和城市(西class牙)也与其他国家合作。

如果国家/地区中的所选选项为西class牙,则将填充省,如果选择省,则将填充城市。 如果在国家/地区中选择了另一个国家/地区,省和城市将保持禁用状态,但没有选项,但默认值为-- Select--

选择国家/省/市时,进行ajax交易以获得结果。 PHP控制器解析结果,如果有结果(仅适用于西class牙),则返回此结果(填充省份):

 -- Select -- Andalucía Aragón Asturias ... 

如果所选国家/地区没有结果,则控制器返回:

 -- Select -- 

我的问题是:如果只有值0的选项,添加一个attr(“disabled”,true),我怎么能处理呢? ?

我的实际JavaScript代码:

 $(document).ready(function(){ $("select#codpais").change(function() { var codpais = $(this).val(); if (0 != codpais) { $.post(BASE_URL + 'projects/ajax/get_autonomias', { codpais: codpais }, function(data) { if (data) { $("select#codauto").attr('disabled', false); $("select#codauto").html(data); } }); } }); }); 

问题是控制器总是返回数据,因为站点是双语的,有些用户需要看– 选择 –和其他– Seleccionar – (如果也被禁用)。

先感谢您!

听起来你只需要在返回数据后检查是否只有一个选项然后禁用选择框,所以你所要做的就是找到选项元素长度并禁用if = = 1.所以你的$.postfunction简单:

 $.post(BASE_URL + 'projects/ajax/get_autonomias', { codpais: codpais }, function(data) { if (data) { var $sca = $("select#codauto"); $sca.attr('disabled', false); $sca.html(data); if ($sca.find("option").length <= 1) { $sca.attr('disabled', true); } } }); 

我还添加了选择器缓存以提高性能。

您可以尝试选择第二个选项,如果不存在则可以将其删除。 这是一个提醒两种情况的例子。

第一个示例有很多选项: http : //jsfiddle.net/zwKup/

默认选项的第二个示例: http : //jsfiddle.net/zwKup/1/

 var checkSecond =$('select option:eq(1)').attr('value'); if (checkSecond == undefined ) { alert ('undefined here');} else {alert(checkSecond)} 

理想情况下,让您的AJAX请求返回一些JSON而不是原始HTML。

如果失败了,你仍然可以通过jQuery提供的DOM遍历函数来查看$(data) ,计算元素的数量。 如果只有一个option ,并且其值为0 ,则将disabled设置为true而不是false。

 $(document).ready(function(){ $("select#codpais").change(function() { var codpais = $(this).val(); if (0 != codpais) { $.post(BASE_URL + 'projects/ajax/get_autonomias', { codpais: codpais }, function(data) { $("select#codauto").html(data); if (data.length == 0) { $("select#codauto").attr('disabled', false); }else{$("select#codauto").attr('disabled', true);} }); } }); 

});