Как вызвать выбранное событие опции? - PullRequest
0 голосов
/ 15 апреля 2019

Я пытаюсь написать Javascript (не Jquery), чтобы при нажатии на раскрывающееся поле адреса запускалось событие для проверки значения в поле «состояние судна».

<script>

var addressDropdown = document.querySelector('#address-id');

var shipstateDropdown = document.querySelector('#shipstate-id');

var SelectedShipState;

addressDropdown.addEventListener('click', (addressEvent) => {
if (shipstateDropdown.options[shipstateDropdown.selectedIndex].value === "CA") {
    SelectedShipState = "CA";
    RunRule();
        }
})

</script>

1 Ответ

0 голосов
/ 17 апреля 2019

Я решил свою проблему. Сначала я должен был установить обработчик событий для раскрывающегося адреса, который, когда это произошло, вызвал функцию. Затем эта функция получает значение из выпадающего списка состояний корабля.

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

// Global defined variables //
var SelectedShipState
var selectElement = document.getElementById('ship-state-id');
var addressBook = document.getElementById('address-book-id');

// Change Event: When an address from the address book is selected ...
addressBook.addEventListener('change', (addressEvent) => {

// ... run this function to get the ship state.
setTimeout(addressFunction, 1000);
    })

// When this function runs ...
function addressFunction() {

// ... get the value from the ship state select option.
SelectedShipState = this.selectElement.options[selectElement.selectedIndex].value;
RunRule();
    }

// Change Event : Get the option each time it is selected //
selectElement.addEventListener('change', (changeEvent) => {
SelectedShipState = `${changeEvent.target.value}`;
RunRule();
})

function RunRule () {
// do something ...
}
...