【问题标题】:ASP:RequiredFieldValidator and jQuery incompatibilityASP:RequiredFieldValidator 和 jQuery 不兼容
【发布时间】:2023-03-24 03:52:01
【问题描述】:

我的页面上运行了一些 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 必填字段验证器时,如果我删除它,一切正常

标签: jquery asp.net jquery-ui jquery-ui-tabs


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-20
    • 2016-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-06
    • 2013-11-24
    相关资源
    最近更新 更多