Подтвердить что ты не робот

Есть ли событие onload для входных элементов?

Можно ли запустить Javascript script, когда визуализируется элемент ввода или любой другой элемент html. Этот script должен запускаться из тега html, чтобы мы могли передать 'this' функции js.

4b9b3361

Ответ 1

Нет, такого события нет.

Однако тег <script>, размещенный непосредственно после элемента HTML, будет иметь аналогичный эффект: он будет выполнен непосредственно после визуализации элемента:

<input type="text" id="input123" value="Hello World!">

<script>
alert("Input123 is now ready:"+document.getElementById("input123).value);
</script>

Однако в большинстве случаев лучше всего использовать load (или DOMReady или jQuery .ready()) в документе для запуска любых операций script. Затем DOM будет полностью готов.

Ответ 2

Способ имитации такого события заключается в создании пользовательского атрибута data- * atttribute (действительный HTML-5) и использования этого в качестве селектора. Затем в главном коде javascript вы можете добавить селектор для всего, что имеет этот специфический атрибут data-XXX, и оценить код javascript внутри.

Пример кода HTML:

<div data-onload="sampleFunction('param1', 2)"></div>

Пример кода Javascript (с использованием jQuery). Также можно использовать обычную DOM для поиска элементов с этим атрибутом.

/* Find any element which has a 'data-onload' function and load that to simulate an onload. */
$('[data-onload]').each(function(){
    eval($(this).data('onload'));
});

Это хорошо работает. Я фактически использую его в производстве.

Ответ 3

Нет. Однако любой script, расположенный после разметки входного элемента, будет запущен с доступным элементом ввода, поскольку он разбирается перед script. Итак, если это все в теле:

<input id="a">
<script>document.getElementById('a');</script>

Все это будет работать.

Ответ 4

Нет, это невозможно. Однако вы можете использовать jQuery + $(document).ready(function) для изменения любого поля ввода, которое вы хотите сразу после завершения загрузки страницы.

Ответ 5

Нет, нет. Просто запустите свой код из обработчика документа "ready" или используйте что-то вроде jQuery, чтобы дать вам возможность запускать код "готов" (когда DOM завершен, но изображения могут не загружаться).

Ответ 6

У меня есть элемент ввода, который динамически добавляется в документ и нуждается в инициализации.

Это не идеально, но вот способ инициализации виджета при первом использовании:

<input onfocus="initwidget(this)">