gpt4 book ai didi

JavaScript 不适用于我的 MasterPage 以外的页面以及未链接到它的页面

转载 作者:行者123 更新时间:2023-12-03 05:55:50 26 4
gpt4 key购买 nike

抱歉英语不好:P

我正在使用 ASP.NET

我正在尝试使用在 Internet 上找到的 JavaScript 为我的电话和手机文本字段设置掩码,但 JS 代码仅适用于位于我的 MasterPage 的字段。我对 JS 没有太多经验(几乎没有),而且我不知道如何解决这个问题,因为我的 Logcat 没有错误。

我尝试在 MasterPage 的头部、正文和 ContentPlaceHolder 内部引用它。

JS代码如下:

function mascara(o, f) {
v_obj = o
v_fun = f
setTimeout("execmascara()", 1)
}
function execmascara() {
v_obj.value = v_fun(v_obj.value)
}
function mtel(v) {
v = v.replace(/\D/g, "");
v = v.replace(/^(\d{2})(\d)/g, "($1)$2");
v = v.replace(/(\d)(\d{4})$/, "$1-$2");
return v;
}
function id(el) {
return document.getElementById(el);
}
window.onload = function () {

id('txtTelefone').onkeypress = function () { //Located at MasterPage - working
mascara(this, mtel);
}
id('txtCelular').onkeypress = function () { //Located at MasterPage - working
mascara(this, mtel);
}
id('telefoneContato').onkeypress = function () { //Located at Contact Page - not working
mascara(this, mtel);
}
id('txtCelularUser').onkeypress = function () { //Located at User Page - not working
mascara(this, mtel);
}
id('txtTelefoneUser').onkeypress = function () { //Located at User Page - not working
mascara(this, mtel);
}
}

正如我之前所说,我尝试在某些地方引用我的JS文件,我尝试的代码是:

<script  src="<%# Page.ResolveClientUrl("../Componentes/js/mascaras.js") %>"></script>

<script src="../Componentes/js/mascaras.js"></script>

如您所见,这些字段位于不同的页面中,我也尝试将代码直接放在页面中,但没有成功。

我认为我不需要在这里发布整个 MasterPage,那么我将只放置头部,但如果存在需要,我将编辑该帖子。

<head runat="server">
<title></title>

<link rel="shortcut icon" href="../imagens/icone.ico" type="image/x-icon" />

<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta charset="utf-8" />


<link href="../Componentes/bootstrap/css/bootstrap.min.css" rel="stylesheet" media="screen" />
<link href="../Componentes/fontawesome/css/font-awesome.min.css" rel="stylesheet" media="screen" />
<link href="../Componentes/css/MasterPage.css" rel="stylesheet" />
<link href="../Fontes/Fontes.css" rel="stylesheet" />
<script src="../Componentes/bootstrap/js/jquery-1.12.4.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/ScrollMagic/2.0.5/ScrollMagic.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/ScrollMagic/2.0.5/plugins/debug.addIndicators.min.js"></script>
<script src="../Componentes/bootstrap/js/bootstrap.min.js"></script>

<%--Mask Scripts--%>
<script src="<%# Page.ResolveClientUrl("../Componentes/js/mascaras.js") %>"></script>
<script src="../Componentes/js/mascaras.js"></script>


<asp:ContentPlaceHolder ID="head" runat="server">

</asp:ContentPlaceHolder>
</head>

编辑 1

尝试过这个:

id('<%= txtTelefoneContato.ClientID %>').onkeypress = function () { //Located at Contact Page - Still not working
mascara(this, mtel);
}
id('<%= txtCelularUser.ClientID %>').onkeypress = function () { //Located at User Page - Still not working
mascara(this, mtel);
}
id('<%= txtTelefoneUser.ClientID %>').onkeypress = function () { //Located at User Page- Still not working
mascara(this, mtel);
}

对脚本的引用位于 MasterPage 头部。但问题还是一样

编辑2

当我检查我的页面时收到此消息:

Error image 1
Error image 2

已解决
正如 VDWWD 所解释的,我只是将 JS 代码直接放在 .aspx 页面中并进行了以下修改:

来自:,

id('txtCelularUser').onkeypress = function () { 
mascara(this, mtel);
}

至:

id('<%= txtCelularUser.ClientID %>').onkeypress = function () { 
mascara(this, mtel);
}

提前谢谢

最佳答案

当使用 JavaScript 访问具有母版页的元素时,您必须像这样使用它。即使没有母版页,使用它也更好。如果您应该更改 ID,则不必在脚本中也更改它。

id('<%= txtTelefoneUser.ClientID %>').onkeypress

如果您查看 HTML 源代码,您会发现该元素的 ID 已从 txtTelefoneUser 更改为像这样的ContentPlaceHolder_txtTelefoneUser 。 Aspnet 添加前缀以确保每个元素都有唯一的 ID。您将在重复数据的元素(如 GridView/Repeater/DataList 等)中看到相同的前缀用法。

更新

如果将 javascript 放入外部文件中,则可以在母版页上放置对它的引用,如下所示(假设 Componentes 是根目录中的文件夹):

<script src="/Componentes/js/mascaras.js" type="text/javascript"></script>

但是<%= txtTelefoneUser.ClientID %>在外部文件中不起作用,只能在 .aspx 页面上起作用。为了使该工作正常进行,请将这些元素声明为变量,并在 aspx 页面上分配它们,同时在外部 js 文件中使用它们。

下面是演示:

在外部 JavaScript 文件中:

var myElement;
function myFunction() {
myElement.value = "Success!";
}

然后在 .aspx 页面上:

<script type="text/javascript">
myElement = document.getElementById("<%= TextBox1.ClientID %>");
</script>

关于JavaScript 不适用于我的 MasterPage 以外的页面以及未链接到它的页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39933312/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com