我正在使用Visual Studio 2012构建一个Web应用程序。我试图将字数统计添加到我的文本框中。但是在添加JavaScript代码和HTML代码后。我收到如上所述的错误。
这是我的JavaScript代码
代码:
function validateLimit(obj, divID, maxchar) {
objDiv = get_object(divID);
if (this.id) obj = this;
var remaningChar = maxchar - trimEnter(obj.value).length;
if (objDiv.id) {
objDiv.innerHTML = remaningChar + " characters left";
}
if (remaningChar <= 0) {
obj.value = obj.value.substring(maxchar, 0);
if (objDiv.id) {
objDiv.innerHTML = "0 characters left";
}
return false;
}
else
{ return true; }
}
function get_object(id) {
var object = null;
if (document.layers) {
object = document.layers[id];
} else if (document.all) {
object = document.all[id];
} else if (document.getElementById) {
object = document.getElementById(id);
}
return object;
}
function trimEnter(dataStr) {
return dataStr.replace(/(\r\n|\r|\n)/g, "");
}
字符串
母版页中的服务器代码
<script type="text/javascript" src="js/JScript.js" ></script>
型
ASPX代码,(Html代码)
<tr>
<th style="width: 595px; height: 135px;">Official Report :</th>
<td colspan="4" style="height: 135px">
<asp:TextBox ID="tbofficial" runat="server" Height="121px" TextMode="MultiLine" Width="878px" MaxLength="500" ToolTip="Summary:(500 characters)" onkeyup="return validateLimit(this, 'lblMsg1', 500)" ></asp:TextBox>
<div id="lblMsg1">500 characters left</div>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
ControlToValidate="tbofficial" Display="Dynamic"
SetFocusOnError="True">*</asp:RequiredFieldValidator>
<br />
<asp:Label ID="lblmsg" runat="server"></asp:Label>
<br />
<br />
<asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClick="btnSubmit_Click" />
<asp:Button ID="btnClear" runat="server" Text="Clear" OnClick="btnClear_Click" />
</td>
</tr>
型
8条答案
按热度按时间ljo96ir51#
您需要一个web.config密钥来启用4.5之前的验证模式。
更多关于**ValidationSettings:UnobtrusiveValidationMode**的信息:
指定ASP.NET如何全局地使内置验证程序控件能够使用不显眼的JavaScript进行客户端验证逻辑。
| | |
| --|--|
| 型号:|UnobtrusiveValidationMode的|
| 预设值:|没有一|
| 备注:|如果将此键值设置为“无”[默认值],则ASP.NET应用程序将使用4.5之前的行为(页中内联的JavaScript)进行客户端验证逻辑。如果将此键值设置为“WebForms”,则ASP.NET将使用HTML5数据属性和来自添加的脚本引用的后期绑定JavaScript进行客户端验证逻辑。|
| 范例:|
字符串|
mbskvtky2#
我没有禁用一个新功能,而是选择按照错误的说明操作。在我的global.asax.cs中,我添加了:
字符串
这来自一个msdn blog post,它突出了脚本资源Map的一些优点。我特别感兴趣的是基于“debug=true”,EnableCDN等对脚本文件的交付进行集中控制。
llew8vvj3#
至少有三种方法可以禁止使用不显眼的JavaScript进行客户端验证:
1.将以下内容添加到web.config文件中:
1.将
System.Web.UI.ValidationSettings.UnobtrusiveValidationMode
静态属性的值设置为System.Web.UI.UnobtrusiveValidationMode.None
1.将
System.Web.UI.Page.UnobtrusiveValidationMode
示例属性的值设置为System.Web.UI.UnobtrusiveValidationMode.None
要在每个页面上禁用该功能,我更喜欢使用page指令设置
Page.UnobtrusiveValidationMode
属性:型
hts6caw34#
在新版本的ASP.NET中,默认情况下启用了非侵入性验证。非侵入性验证旨在通过使用jQuery的小型JavaScript库替换用于执行验证的内联JavaScript来减小页面大小。
您可以通过编辑web.config来禁用它,以包括以下内容:
字符串
或者修改global.asax中的Application_Start方法来正确配置它:
型
《用C#和VB开始ASP.NET 4.5.1》的第399页讨论了非侵入性验证的好处,并提供了配置它的演练。
对于那些寻找RouteConfig的人。当你在Visual Studio中创建一个新项目时,它会自动添加到App_Code文件夹中。内容如下所示:
型
tf7tbtn25#
在global.asax上的B_levitt.的回答中添加更多内容:
字符串
在您的默认.aspx
型
nwlqm0z16#
我相信我也遇到了同样的困惑。当我改为:
字符串
这会给出上面描述的错误消息。
增加:
型
解决了这个问题,**但它会使您的验证控件/脚本抛出JavaScript运行时错误。**如果您更改为:
型
你应该没问题,但你必须确保你的代码的其余部分按照你想要的那样做/行为。你可能还必须放弃一些只有在4.5以后才能使用的新功能。
P.S.强烈建议您在实施此解决方案之前阅读以下内容。特别是如果您使用异步功能:
https://blogs.msdn.microsoft.com/webdev/2012/11/19/all-about-httpruntime-targetframework/
**2017年4月更新:**经过一些实验和测试,我想出了一个有效的组合:
型
使用:
jQuery版本1.11.3
kwvwclae7#
这个问题是由于控制验证器而发生的。只需将J Query引用添加到您的网页,如下所示,然后在您的web.config文件中添加验证设置来克服这个问题。我也面临着同样的问题,下面给出了解决我的问题的方法。
第一步:
的数据
第二步:
的
它会解决你的问题。
tp5buhyn8#
它有3个解决方案,其他人告诉上层.但当尝试Application_Start解决方案,我的其他jQuery库,如Pickup_Date_and_Time不工作.所以我测试第二种方法,它的答案:1-设置目标FrameWork到前4.5 2-使用“UnobtrusiveValidationMode=“无”“在你的页眉=>
字符串
它对我很有效,不会破坏我的其他jQuery函数。