Сохраните значение в глобальную переменную во время события, которое будет использоваться для дальнейшего - PullRequest
0 голосов
/ 21 января 2020

Мне интересно, как получить следующую функциональность, пожалуйста.

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

var globalVar;

$('.inputIdentifier').on('focus', function() {
  globalVar = $(this).attr('data-val');
  console.log(globalVar);
});

//access the value in globalVar outside the function?
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<input type="text" class="inputIdentifier" data-val="myData" />

Спасибо.

Ответы [ 2 ]

1 голос
/ 21 января 2020

Значение .inputIdentifier присваивается globalVar только тогда, когда оно получает фокус. Код ниже focus запускается до того, как пользователь сфокусируется на вводе, поэтому ваш globalVar по-прежнему будет неопределенным. Вы увидите это из console.log, который я добавил ниже. Можете ли вы вызвать другую функцию внутри focus и передать globalVar в качестве параметра?

var globalVar;

$('.inputIdentifier').on('focus', function() {
  globalVar = $(this).attr('data-val');
  console.log('globalVar on focus', globalVar);
  doSomething(globalVar);
});

//You will not get the value of $(this).attr('data-val') here. globalVar only gets set when the onFocus of .inputIdentifier
console.log('globalVar on initial run', globalVar);

function doSomething(globalVar){
  console.log('globalVar in doSomething', globalVar);
}
0 голосов
/ 21 января 2020

В коде, который вы написали, он имеет значение, только если вы 'focus' на входе. поэтому, пока пользователь не сосредоточится на вводе, переменная будет undefined. проблема доступна только в первый раз, когда пользователь никогда не вводит 'focus' на входе До сих пор. лучше использовать функцию if statement или hasfocus, чтобы проверить ее в другой функции, в которой вы используете переменную, или использовать начальное значение для вашей переменной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...