Нужна помощь в сочетании функций jquery

0

Я пытаюсь взломать пару различных функций jquery, чтобы помочь мне завершить проект, над которым я работаю.

Кажется, что первая часть работает (заполнение двух входных текстовых полей, но я не могу заполнить второй вариант выделения с помощью массива, который я предоставил. Я уверен, что это что-то простое, но новое для jquery. Я не могу это понять.,

редактировать

Мне нужно разделить значение параметров (разделенных "_") первого раскрывающегося списка "Выбрать" и отправить их в оба отображаемых текстовых поля. Это важно для моей функциональности страницы.

Вот мой html

<form action="/revenue_lines/lock" id="lockLockForm" method="post" accept-charset="utf-8">
<input type="text" id="RevenueLineDate1">
<input type="text" id="RevenueLineDate2">
<select id="selector">
    <option value="Data1_<Data1>">Sample1</option>
    <option value="Data2_<Data2>">Sample2</option>
</select>
<select id="item"></select>

И вот мой jquery

$('#selector').on('change', function () {
var val = this.value;
var parts = val.split("_");
$('#RevenueLineDate1').val(parts[0]);
$('#RevenueLineDate2').val(parts[1]);
});

Sample1 = new Array('Top Story', 'Cases', 'News');
Sample2 = new Array('Top Story', 'Cases', 'News');

populateSelect();

$(function () {

$('#selector').change(function () {
    populateSelect();
});

});

function populateSelect() {
selector = $('#selector').val();
$('#item').html('');

eval(selector).forEach(function (t) {
    $('#item').append('<option>' + t + '</option>');
});
}

Вот ссылка на jsfiddle, над которым я работаю.

Спасибо заранее!

  • 1
    jsfiddle.net/deuq3/15
  • 0
    Это близко, но мне все еще нужно разделить значения параметров (разделенных "_"), чтобы я мог заполнить оба текстовых поля. Извините за непонятность, я отредактирую свой вопрос.
Теги:

1 ответ

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

Ты был почти там!

Попробуйте вместо этого HTML:

<select id="selector">
    <option value="Sample1">Sample1</option>
    <option value="Sample2">Sample2</option>
</select>

Ваш.val() получает атрибут value для выбранного <option>, а не текст.

Редактировать:

Я вижу из вашего редактирования, что исходные значения важны для вас. В этом случае замените свой .val() в .val() на .text() и вы получите поведение, которое, я думаю, вы хотите.

function populateSelect() {
    selector = $('#selector').text();
    $('#item').html('');

    eval(selector).forEach(function (t) {
        $('#item').append('<option>' + t + '</option>');
    });
}

В качестве примечания я обычно не рассматривал бы использование видимого текста в качестве хорошей практики - это мешает вам делать такие вещи, как локализация текста. Одним из альтернатив было бы вместо этого отключить первую часть значения (Data1, Data2) с помощью split() и использовать их в качестве имен массивов. Затем вы можете изменять отображаемый текст, не нарушая свою функциональность.

  • 0
    Это оно! Большое спасибо!

Ещё вопросы

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