我有一个
javascript库,它确实将结果列表返回给在keyup事件上触发的div.我想使用
Jquery将标准keyup事件应用于具有特定类的所有页面上的所有字段.
那部分我可以做,它工作正常.
我的问题是我使用的参数是动态的,其中最后两个是可选函数.
那部分我可以做,它工作正常.
我的问题是我使用的参数是动态的,其中最后两个是可选函数.
<input type="text" class="font8_input" name="wsFromPart" value="<%=wsFromPart%>" id="wsFromPart" size="20" maxlength="20" onfocus="javascript:fncAjaxClear()" onkeyup="javascript:fncAjaxSearch('wsDatabase','..\\AjaxBrowses\\PartBrowse.asp','wsFromPart','wsFromPartList','fncPrePartAjax',null);"/>
目前,为了控制这个我传递null如果我没有函数.
我正试图找到一个可以定义所有字段的位置.
<input type="text" class="PartClass" name="wsFromPart" value="<%=wsFromPart%>" id="wsFromPart" />
其他所有内容都将通过Jquery设置类/事件来添加.
我正试图弄清楚如何测试我的页面上是否存在某个函数,并且只有在它执行时才执行.我已经尝试将函数名称作为字符串传递但似乎无法使其工作.我的最后一次尝试是使用泛型函数,并将可能存在的函数名称传递给此函数进行评估,如果是函数,则执行它.
<input type="text" class="font8_input" name="wsFrPt" id="wsFrPt" size="20" maxlength="20" value="<%=wsFrPt%>" onfocus="javascript:fncAjaxClear()" onkeyup="javascript:fncAjaxSearch('wsDatabase','wsFrPt','wsFrPtList',fncCheckFunction('fncPreAjaxPart1'),'fncPostAjaxPart');"/> function fncAjaxSearch(wsDb,wsAsp,wsId,wsTarget,wsPreFunction,wsReturnFunction) { var myDate = new Date(); var myDate1 = myDate.getTime(); if (objXHR.readyState == 4 || objXHR.readyState == 0) { var wsDatabase = escape(document.getElementById(wsDb).value); var wsStr = escape(document.getElementById(wsId).value); var wsParam = ""; if (wsPreFunction !== null) { wsParam = wsPreFunction(); } //Only do ajax call if the 'source' field is not empty,otherwise empty target and clear border. if (document.getElementById(wsId).value > '') { objXHR.open("GET",wsAsp + '?qryDatabase=' + wsDatabase + '&qryDummy=' + myDate1 + '&qrySearch=' + wsStr + wsParam,true); objXHR.onreadystatechange = function(){if(objXHR.readyState==4){fncAjaxSearchReturn(objXHR,wsReturnFunction)}}; objXHR.send(null); } else { document.getElementById(wsTarget).innerHTML = ''; document.getElementById(wsTarget).style.borderWidth = '0px'; } }
}
解决方法
如果它是全局的,你可以这样做
var fnc = window["yourFunctionName"]; //Use bracket notation to get a reference if( fnc && typeof fnc === "function" ) { //make sure it exists and it is a function fnc(); //execute it }
如果它是命名空间,你可以做同样类型的事情,只涉及一些循环.
var myFnc = "foo.bar.fun"; var nameParts = myFnc.split("."); //split up the string into the different levels var fnc = window; //set it to window for(var i=0;i<nameParts.length;i++){ //loop through each level of the namespace fnc = fnc[nameParts[i]]; if(!fnc){ //make sure it exists,if not exit loop fnc = null; break; } } if( fnc && typeof fnc === "function" ) { //make sure it exists and it is a function fnc(); //execute it }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。