Как изменить содержимое для каждой опции элемента select с помощью Javascript или jQuery

0

Моя задача состоит в том, чтобы изменить содержимое в таблице при изменении параметров выбора.

Код ниже - мое решение, но я не думаю, что это хорошо. Что делать, если параметры имеют более трех параметров... это может привести меня к изменению большого количества в if else. Таким образом, если у вас есть другие решения, сообщите мне об этом.

Могу ли я установить id="approve_2" как показать значение по умолчанию с моим отредактированным JSFIDDLE?

Demo

HTML:

<table>
<tr>
    <td>
        <select id="select_vehicle">
            <option value="company_vehicle">Company Vehicle</option>
            <option value="hiring_vehicle">Hiring Vehicle</option>
            <option value="taxi">Taxi</option>
        </select>
    </td>
</tr>
<tr id="company_vehicle">
    <td>Company Vehicle</td>
</tr>
<tr id="hiring_vehicle">
    <td>Hiring Vehicle</td>
</tr>
<tr id="taxi">
    <td>Taxi</td>
</tr>
</table>

Javascript:

var select_vehicle = $("#select_vehicle");
// Set selected item
var set_selected_item = $(select_vehicle).val("company_vehicle");
// Hide options "Hiring Vehicle" & "Taxi"
var company_vehicle = $("#company_vehicle"); // Get id "Company Vehicle"
var hiring_vehicle = $("#hiring_vehicle"); // Get id "Hiring Vehicle"
hiring_vehicle.hide();
var taxi = $("#taxi"); // Get id "Taxi"
taxi.hide();


$(select_vehicle).on('change', function (e) {
var optionSelected = $("option:selected", this);
var valueSelected = this.value;
if (valueSelected == "company_vehicle") {
    company_vehicle.show();
    hiring_vehicle.hide();
    taxi.hide();
} else if (valueSelected == "hiring_vehicle") {
    company_vehicle.hide();
    hiring_vehicle.show();
    taxi.hide();
} else {
    company_vehicle.hide();
    hiring_vehicle.hide();
    taxi.show();
}
});

JSFIDDLE: http://jsfiddle.net/huydq91/7us66/3/

Теги:

1 ответ

2
Лучший ответ

Вы можете сократить код без повторения следующим образом:

$('table tr:gt(0)').hide();
$('#select_vehicle').change(function() {
    var val = $(this).val();
    $('#'+val).show().siblings('tr').not(':first').hide();    
}).change();

Обновленный скрипт

  • 0
    Спасибо за ваш код. Тем не менее, есть много тегов <tr> выше и ниже моего кода ... Не могли бы вы рассказать мне об этой table tr:gt(0) ?
  • 1
    : gt (0) будет соответствовать элементам с индексом, превышающим индекс 0, который является вашим первым значением tr , если вы хотите больше, чем второе значение tr чем используйте :gt(1)
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню