Событие jQuery, объявленное в теге с дополнительными данными - PullRequest
0 голосов
/ 09 ноября 2018

У меня есть выбор с обработчиком события изменения:

<select id="mySelect" onchange="changedMySelect">
   <option value="test1">Test1</option>
   <option value="test2">Test2</option>
</select>

и

function changedMySelect(event, myParam1, myParam2) {
   alert(myParam1);
}

Я хотел бы иметь возможность инициировать это событие (объявленное в HTML), передавая дополнительные параметры (myParam1, myParam2).

$("#mySelect").trigger("change", myParamValue1, myParamValue2);

Однако myParam1 не определен, так же, как когда пользователь щелкает (что ожидается). Как отправить myParamValue1?

В идеале я не должен перемещать объявленный в HTML обмен на Javascript (который подтвержден для работы). Нам нужно сохранить onchange в HTML, но мы можем изменить его при необходимости.

1 Ответ

0 голосов
/ 09 ноября 2018

Когда вы используете атрибут onchange="something", вызываемая функция будет получать только то, что вы добавили в атрибут. Это не получит событие или что-нибудь еще. Таким образом, если поставить onchange="changedMySelect(1, 2)", то вызовется ваша функция changeMySelect с аргументами 1 и 2.

.

Для того, чтобы он получил событие и другие параметры, вместо этого вам придется обрабатывать событие через javascript. Кроме того, jQuery trigger нуждается в параметрах в виде массива, а не в виде отдельных параметров:

function changedMySelect(event, myParam1, myParam2) {
   alert(myParam1 + ' ' + myParam2);
}

// You need to do this instead of using onselect in the HTML
$("#mySelect").on("change", changedMySelect);

$("#mySelect").trigger("change", ["param1", "param2"]);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<select id="mySelect">
   <option value="test1">Test1</option>
   <option value="test2">Test2</option>
</select>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...