ASP:RequiredFieldValidator 和 jQuery 不兼容

Posted

技术标签:

【中文标题】ASP:RequiredFieldValidator 和 jQuery 不兼容【英文标题】:ASP:RequiredFieldValidator and jQuery incompatibility 【发布时间】:2017-07-16 01:26:44 【问题描述】:

我的页面上运行了一些 jQuery 插件(即选项卡)。当我添加 <asp:requiredfieldvalidator> 时,jQuery 功能停止工作......有什么想法吗?

未捕获的类型错误:无法读取未定义的属性“移动” ZozoTabs.init 中的 Object.initAnimation (zozo.tabs.js:1050) (zozo.tabs.js:799) 在 htmlDivElement。 (zozo.tabs.js:2122) 在 jQuery.fn.init.each 的 Function.each (jquery-2.1.4.js:374) (jquery-2.1.4.js:139) 在 jQuery.fn.init.$.fn.zozoTabs (zozo.tabs.js:2120) 在 HTMLDocument。 (PatientRegistration.js:18) 着火 (jquery-2.1.4.js:3099) 在 Object.fireWith [as resolveWith] (jquery-2.1.4.js:3211) 在 Function.ready (jquery-2.1.4.js:3417)

if (jQuery.browser.mobile)  
    //_base.settings.event = zozo.events.touchend; 
    _base.settings.shadows = false; 
 
if ($.zozo.core.support.css.transition === false)  
    _base.settings.animation.type = zozo.animation.types.jquery; 
    if (jQuery.browser.mobile)  
         _base.settings.animation.duration = 0; 
     

【问题讨论】:

你能得到你的源代码的快照吗? 我收到此错误,未捕获的类型错误:无法在 ZozoTabs.init (zozo.tabs.js:799) 的 Object.initAnimation (zozo.tabs.js:1050) 处读取未定义的属性 'mobile'在 HTMLDivElement. (zozo.tabs.js:2122) 在 Function.each (jquery-2.1.4.js:374) 在 jQuery.fn.init.each (jquery-2.1.4.js:139) 在jQuery.fn.init.$.fn.zozoTabs (zozo.tabs.js:2120) at HTMLDocument. (PatientRegistration.js:18) at fire (jquery-2.1.4.js:3099) at Object.fireWith [as resolveWith] (jquery-2.1.4.js:3211) 在 Function.ready (jquery-2.1.4.js:3417) if (jQuery.browser.mobile) //_base.settings.event = zozo.events.touchend; _base.settings.shadows = false; if ($.zozo.core.support.css.transition === false) _base.settings.animation.type = zozo.animation.types.jquery; if (jQuery.browser.mobile) _base.settings.animation.duration = 0; 这一切发生在我添加 asp 必填字段验证器时,如果我删除它,一切正常 RequiredFieldValidator is not working properly with jQuery UI的可能重复 【参考方案1】:

这已在 Stack Overflow 的其他地方得到解答:

Answer 1:

来自 ASP.NET 的 RequiredFieldValidator 使用 jQuery 客户端,它 需要先注册(见这里)。

显然,ASP.NET 在 表单的第一部分。

如果您在您的 <head> 内注册了自己的 <script> 标签 页面(首先是 jQuery,然后是 jQuery UI),这实际上意味着你是 失去你的 jQuery UI 绑定,因为 jQuery 再次被引用 在 <head> 之后感谢 WebForms。

解决方案是引用您的脚本(jQuery、jQuery UI 和任何 自定义脚本)在页面末尾,例如在表单之后 元素。

Answer 2

您需要一个 web.config 密钥来启用 4.5 之前的验证模式。

关于ValidationSettings:UnobtrusiveValidationMode的更多信息:

指定 ASP.NET 如何全局启用内置验证器控件 为客户端验证逻辑使用不显眼的 javascript

类型:UnobtrusiveValidationMode

默认值:无

备注:如果此键值设置为 "None" [默认],则 ASP.NET 应用程序将使用 4.5 之前的行为(JavaScript inline in the pages)用于客户端验证逻辑。如果此键值设置为 “WebForms”,ASP.NET 使用 HTML5 数据属性和后期绑定 JavaScript 来自添加的脚本参考,用于客户端验证 逻辑。

例子:

<appSettings>
  <add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
</appSettings

【讨论】:

以上是关于ASP:RequiredFieldValidator 和 jQuery 不兼容的主要内容,如果未能解决你的问题,请参考以下文章