#javascript #jquery #html
#javascript #jquery #HTML
Вопрос:
Приведенный ниже фрагмент кода был создан для того, чтобы скрывать или показывать выпадающие списки в зависимости от того, что выбрано. В приведенном ниже примере:
**TRANSLATION**
If modelyear <= 67
And assyplant=bf
Or modelyear >=68
then display the following dropdowns etc.
Я хотел бы подробнее остановиться на этом, указав следующее:
If modelyear <=67
And assyplant =bf
OR
modelyear <=67
And assyplant =bc
Or modelyear >=68 then display the following dropdowns etc etc etc.
Уже есть следующий рабочий код:
// model_year assy_plant logic
if (thisField == 'model_year' || thisField == 'assy_plant') {
var modelYear = parseInt($('#model_year').children('option:selected').text());
if (isNaN(modelYear)) {
return;
}
var assyPlant = $('#assy_plant').children('option:selected').text();
$('tr#row6').css('display', 'none');
$('tr#row7').css('display', 'none');
$('tr#row6 select').attr('disabled', 'disabled');
$('tr#row7 select').attr('disabled', 'disabled');
if (((modelYear <= 67 amp;amp; assyPlant.toLowerCase()) == 'bf')
|| modelYear >= 68) {
$('tr#row6').css('display', 'table-row');
$('tr#row6 select').removeAttr('disabled');
} else {
$('tr#row7').css('display', 'table-row');
$('tr#row7 select').removeAttr('disabled');
}
}
Вполне вероятно, что в будущем мне придется добавлять дополнительные вспомогательные значения. Спасибо за ваше время.
Ответ №1:
Вы можете использовать jQuery.inArray() для проверки, является ли assyplant
это одним из возможных значений.
var assyplants = ['bf', 'bc']; // Expandable list of assyPlant values to check for
if ((model_year <= 67 amp;amp; jQuery.inArray(assyPlant.toLowerCase(), assyplants)!==-1)
|| model_year >= 68)
{ ...
Ответ №2:
Поскольку вы упомянули о возможности добавления дополнительных вспомогательных значений, я предлагаю сохранить все возможности в массиве, а затем использовать метод array.some()
var poss_values = ['bf', 'bc'];
var check_assy = poss_values.some(function(val){
return assyPlant.toLowerCase() === val;
})
if ((modelYear <= 67 amp;amp; check_assy) || modelYear >= 68) {
$('tr#row6').css('display', 'table-row');
$('tr#row6 select').removeAttr('disabled');
} else {
$('tr#row7').css('display', 'table-row');
$('tr#row7 select').removeAttr('disabled');
}
Ответ №3:
if (((modelYear <= 67 amp;amp; assyPlant.toLowerCase()) == 'bf')
|| modelYear >= 68) {
$('tr#row6').css('display', 'table-row');
$('tr#row6 select').removeAttr('disabled');
}
else if (((modelYear <= 67 amp;amp; assyPlant.toLowerCase()) == 'bc')
|| modelYear >= 68) {
$('tr#row6').css('display', 'table-row');
$('tr#row6 select').removeAttr('disabled');
} else {
$('tr#row7').css('display', 'table-row');
$('tr#row7 select').removeAttr('disabled');
}
}
else {
$('tr#row7').css('display', 'table-row');
$('tr#row7 select').removeAttr('disabled');
}
}
Я добавил оператор else if, чтобы вы могли добавить больше вспомогательных модулей. Конечно, вы должны назначить им новую переменную следующим образом: var values =['bf', 'bc'];