我试图从外部Javascript/jQuery
文件中获取.js
代码段。
在我的asp.net html页面底部的脚本标记内运行正常,但现在它在一个外部JS
文件中运行。我已成功插入(动态)链接到外部文件(可在页面源中查看)并能够从其中激活弹出警报,因此我知道正在正确访问外部文件。我在外部文件之前也引用了JQuery
,但以下脚本不会触发/运行?任何想法都会很棒,谢谢。
$("#<%=sDatepicker.ClientID%>").focus(function () {
//$(this).blur();
alert("Handler for .Datepicker called.");
});
正如您所看到的那样,我尝试使用Textbox
访问ID=sDatepicker
,但asp.net在其之前添加ClientID
所以我需要找到它实际TextBox
。
我认为该网页可能尚未加载且TextBox
控件可能不存在,因为外部JS
文件位于我的文档的Head
中,但我也尝试过添加
$('document').ready(function () { });
围绕JS文件中的脚本,但这似乎没什么帮助。
就像我说的那样,它在HTML
页面中工作正常,但我只需要在某些情况下引用外部文件,因此需要在需要时动态地从我的C#代码中添加它。
欢呼声。
我现在在我的外部JS
文件中有以下内容:
$(document).ready(function () { keypadSuppress(); });
在我的.aspx
HTML
文件中,我有以下内容:
<script type="text/javascript">
function keypadSuppress() {
$("#<%=sDatepicker.ClientID%>").focus(function () {
$(this).blur();
alert("Handler for sDatepicker called.");
});
$("#<%=eDatepicker.ClientID%>").focus(function () {
$(this).blur();
alert("Handler for eDatepicker called.");
});
}
</script>
在上面的更新中尝试了上面的代码,今天工作正常(gremlins仍然要睡着了)。我做的唯一更改是向Document.ready
函数添加一个警报,以便在访问它时进行标记,但这不是问题。上面的代码工作正常。
我需要做的另一件事就是在它周围添加一个<div>
,我明白这是真的&#39;真的&#39;或者可见=&#39; false&#39;取决于我是否测试了移动设备,使用
bool IsMobile = Page.Request.Browser.IsMobileDevice;
谢谢,我们最终到达那里:)
答案 0 :(得分:3)
当javascript在HTML中内联时,&lt;%=%&gt;标签由ASP.NET正确解析。当您将这个javascript逐字提取到外部文件中时,ASP.NET解析器将不会处理此文件,因此不会像Rory McCrossan所说的那样将id标记转换为正确的ID。
现在,一些可能的解决方案: