如何从 html 可访问标签使用或创建非全局 javascript 变量缓存
How to use or create a non-global javascript variable cache from a html accessible tag
我有一个 javascript 函数需要从输入字段中调用 'onkeyup':
<input id="searchSurname" type="text" name="surname" onkeyup="queryPatients()" />
然而,对于会话的生命周期(或者只要用户正在使用该页面),函数需要能够缓存每次事件发生时的一些结果。
为了防止我的缓存变量被全局访问(讨厌讨厌),我将它们封装在一个匿名函数中(我见过很多这种模式)
(function(){
var cacheSurname = "";
var cacheGivenNames = "";
function queryPatients() {
var surname = $('#searchSurname').val();
var givenNames = $('#searchGivenNames').val();
// do some more work, cache the variables
cacheSurname = surname;
cacheGivenNames = givenNames;
}
}).call(this);
然而,由于如此封闭,我的输入字段无法调用该方法。
有合适的解决方案吗?还是我必须求助于全局变量?
因为您使用的是 jQuery,您可以绑定到 "private" 范围内的按键弹起事件。
(function(){
var cacheSurname = "";
var cacheGivenNames = "";
function queryPatients() {
var surname = $('#searchSurname').val();
var givenNames = $('#searchGivenNames').val();
// do some more work, cache the variables
cacheSurname = surname;
cacheGivenNames = givenNames;
}
$('#searchSurname').on('keyup', queryPatients);
}).call(this);
我有一个 javascript 函数需要从输入字段中调用 'onkeyup':
<input id="searchSurname" type="text" name="surname" onkeyup="queryPatients()" />
然而,对于会话的生命周期(或者只要用户正在使用该页面),函数需要能够缓存每次事件发生时的一些结果。
为了防止我的缓存变量被全局访问(讨厌讨厌),我将它们封装在一个匿名函数中(我见过很多这种模式)
(function(){
var cacheSurname = "";
var cacheGivenNames = "";
function queryPatients() {
var surname = $('#searchSurname').val();
var givenNames = $('#searchGivenNames').val();
// do some more work, cache the variables
cacheSurname = surname;
cacheGivenNames = givenNames;
}
}).call(this);
然而,由于如此封闭,我的输入字段无法调用该方法。
有合适的解决方案吗?还是我必须求助于全局变量?
因为您使用的是 jQuery,您可以绑定到 "private" 范围内的按键弹起事件。
(function(){
var cacheSurname = "";
var cacheGivenNames = "";
function queryPatients() {
var surname = $('#searchSurname').val();
var givenNames = $('#searchGivenNames').val();
// do some more work, cache the variables
cacheSurname = surname;
cacheGivenNames = givenNames;
}
$('#searchSurname').on('keyup', queryPatients);
}).call(this);