繁体   English   中英

为什么在external.js文件中我的代码不能运行,而在HTML中为什么不能运行

[英]Why won't my code run when in external.js file but does if in HTML

我正在尝试从外部.js文件运行Javascript/jQuery代码段。

当在我的asp.net html页面底部的脚本标签中运行时,它运行良好,但是现在它在外部JS文件中,因此无法运行。 我已经成功地(动态地)插入了到外部文件的链接(在页面源代码中可查看),并且能够从其中触发弹出警报,因此我知道外部文件正在正确访问中。 在外部文件之前,我也有对JQuery引用,但是以下脚本将不会触发/运行? 任何想法都会很棒,谢谢。

$("#<%=sDatepicker.ClientID%>").focus(function () {
  //$(this).blur();
  alert("Handler for .Datepicker called.");
});

如您所见,我正在尝试访问ID=sDatepickerTextbox ,但是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>

更新2

在上面的更新中尝试了上面的代码,并且今天可以正常工作(gremlins必须仍然处于睡眠状态)。 我所做的唯一更改是向Document.ready函数添加了警报,以在访问它时进行标记,但这不是问题。 上面的代码按原样工作正常。

我只需要做的另一件事就是在其周围添加一个<div> ,根据我是否在测试手机,在我后面的C#代码中,将其设为visible ='true'或visible ='false'。

bool IsMobile = Page.Request.Browser.IsMobileDevice;

谢谢,我们最终到达了:)

当JavaScript在HTML中内联时,<%=%>标记已由ASP.NET正确解析。 当您逐字将此javascript提取到外部文件中时,ASP.NET解析器将不处理此文件,因此id标记将不会转换为Rory McCrossan已经说明的正确ID。

现在,一些可能的解决方案:

  • 您可以在外部javascript文件中定义一个函数,然后在网页上的某些内联javascript中调用该函数。 此内联javascript可以使用<%=%>标记,它们将正确替换为datepicker元素的ID。
  • 您可以选择服务器生成的ID以外的其他内容来正确识别日期选择器。 考虑添加自定义CSS类,或自己选择ID。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM