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

我正在尝试从外部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#代码中动态添加它。

干杯。

根据可能的解决方案1,从以下反馈中更新。

现在,我的外部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。

javascript popupwindow之后的行如何工作? - javascript

好的,我有一个来自后面代码的方法,可以创建一个popupwindow。然后有一行代码要在那之后执行,我想知道那行代码何时执行,是在使用popupwindow之后执行还是在创建popupwindow之后执行?例如:void exPopupWindowMethod() { string scr = "window.open('exampleP…

ddl在服务器中未更新-asp.net - javascript

我在ASP.NET c#上工作。我有一个DropDownList。 (runat =“ server”)在$ {document).ready上,我更新了它的值:$(document).ready(function () { document.getElementById("ddl").value = "abc"; ……

.NET C#Webbrowser填充输入,不带ID或类名 - javascript

我需要在网络浏览器中填写一个输入,但这不起作用。我认为必须使用name属性来完成,但是怎么做呢?foreach (HtmlElement login in webBrowser1.Document.GetElementsByTagName("input")) { if (login.GetAttribute("name"…

Javascript-Urls的奇怪字符串比较行为 - javascript

最近,在编写我无法理解的javascript时遇到了字符串比较的问题。我从完全相同的网址创建了两个字符串,当我比较它们时返回false,但是在重新分配相同的字符串后,比较返回true。这是我的示例:var str1 = "http://google.com/"; var str2 = "http://google.com‏/&#…

从控制器以视图(javascript)访问会话 - javascript

这是我的控制器代码。我想获取视图中存储在会话中的值(JavaScript代码) decimal.TryParse(permotion.PROMOTION_AMOUNT.ToString(), out promotionAmount); int.TryParse(permotion.PROMOTION_TYPE_ID.ToString(CultureInfo.…