Правила для вызова метода onfocus

#javascript

#javascript

Вопрос:

В массе JavaScript, который я пытаюсь поддерживать, у меня более 300 применений, таких как следующее:

 <input type="text" name="x" value="y" style="stuffweshouldhaveincss", class="z"
 onfocus="javascript:$.fn_StoreExistData(this.value)"
 onchange="javascript:$.BigSection.TraceChange('aa','bb','cc')" />
  

Во многих случаях вызывается функция StoreExistData; общая идея состоит в том, чтобы сохранить значение, которое в данный момент находится в поле, и вернуться к нему, если поле не проходит проверку в функции «TraceChange». Моя проблема в том, что иногда функция StoreExistData, похоже, работает нормально — процедура проверки обнаруживает ошибку, выдает сообщение и восстанавливает соответствующее поле до его предыдущего значения.

Иногда он восстанавливает предыдущее значение из какого-либо другого поля. На основе установки точек останова в отладчике Chrome выясняется, что иногда функция StoreExistData не вызывается. Это объяснило бы использование ранее сохраненных значений, поэтому мне остается размышлять о том, что может привести к пропуску вызова функции для некоторых полей (или в некоторых ситуациях), а не в других случаях. Может кто-нибудь указать мне на то, что нужно проверить для этого?

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

1. Вы пробовали использовать общий обработчик событий (например. $("input[type=text]).on("focus", function(e) { $.fn_StoreExistData(e.target.value) }); вместо встроенного onfocus ?

2. Есть ли причина, по которой вы думаете, что это сработает? Вызовы в форме, которую я имею, работают в некоторых случаях, а не в других; это указывает мне, что этот способ вызова процедуры допустим. Существует много, много, (много, МНОГО) разных способов сделать что-то, я не собираюсь просто переходить на другой способ. Я надеюсь, что кто-нибудь может указать мне на возможные причины, по которым некоторые из моих случаев не работают, чтобы я мог чувствовать, что я что-то исправляю, а не просто пытаюсь что-то другое.

3. Все ли ваши входные text данные являются полями? Chrome не поддерживает: фокус на checkbox и radio вводы.

4. Да, по крайней мере, все, о чем я беспокоюсь, — это текстовые поля. Идея состоит в том, чтобы сохранить значение для восстановления при сбое проверки, и проверка флажков и переключателей не так много (по крайней мере, в этой системе),.