Как я могу запустить фрагмент кода только один раз после фокусировки на одном из полей

#javascript #html #typescript

#javascript #HTML #typescript

Вопрос:

 <form id="myForm">
<label for="fname">First name:</label><br>
<input type="text" id="fname" name="fname"><br>
<label for="mname">Middle name:</label><br>
<input type="text" id="mname" name="mname"><br><br>
<label for="lname">Last name:</label><br>
<input type="text" id="lname" name="lname"><br><br>
</form> 
  

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

Комментарии:

1. вы, вероятно, ищете это …. w3schools.com/jsref/event_onfocus.asp

Ответ №1:

Вы можете создать функцию JavaScript, содержащую ваш код, затем выполнить цикл по каждому из элементов формы и в качестве события фокусировки

Нравится

 function hi (){
//Do stuff, then if you don't want it to go again

    Array.from(myForm.children)
        . forEach (c => 
            c.removeEventListener("focus", hi)
        )
}

Array.from(myForm.children)
. forEach (c => 
    c.addEventListener("focus", hi)
)
  

Комментарии:

1. Функция должна выполняться только один раз для события фокусировки. Например, если первое поле сфокусировано, то функция должна быть выполнена, вот и все. После этого для любого события фокусировки функция не должна вызываться

2. Таким образом, он должен вызываться один раз для каждого элемента или один раз всего, если выбран какой-либо элемент?

3. всего один раз, если выбран какой-либо элемент