【问题标题】:jQuery Validation plugin version 1.11.1 is not working in Explorer 8jQuery Validation 插件版本 1.11.1 在 Explorer 8 中不起作用
【发布时间】:2013-07-29 02:48:18
【问题描述】:

我正在使用 jQuery Validation Plugin - v1.11.1 和 jquery 1.10.2 但下面的代码在 IE 8 中不起作用。它在 IE9 及更高版本以及 Chrome 等其他浏览器中也能正常工作。

<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
    <script src="Scripts/jquery_validate.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            $('#btn').click(function() {                 
                $("#form1").validate({                       
                    rules: { 
                        <%= txt.UniqueID %>: "required"
                    },
                    messages: { 
                        <%= txt.UniqueID %>: "Please enter QTY"
                    }                                    
                });
            });
        });     
    </script>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    ID
    <asp:TextBox runat="server" ID="txt" ClientIDMode="Static" />
    <asp:Button Text="Test" runat="server" ID="btn" ClientIDMode="Static" />    
</asp:Content>

已编辑:

我将 validate() 包装在 $('#brn').Click(function(){}) 事件中的原因是我有另一个来自 GridView RowCommand 事件的 postBack。是否有另一种方法可以调用 jquery validate()仅在单击按钮时?

【问题讨论】:

  • 你试过用引号将“”括起来吗?
  • 我在这里看到了类似的问题,但看起来你有更新的版本? stackoverflow.com/questions/5942327/….
  • 你误解了.validate() 在做什么。这只是初始化例程。如果您只想在每次单击时“测试”表单,请使用.valid() 方法。您仍然需要在页面加载时先初始化插件。

标签: asp.net internet-explorer-8 jquery-validate jquery-1.10


【解决方案1】:

您的代码错误地将 .validate() 包装在 click 处理程序中...

$('#btn').click(function() {                 
    $("#form1").validate({                       
        ...                             
    });
});

这是错误的,因为.validate() 只是插件的initialization 方法,因此没有理由将其包装在click 处理程序中。提交按钮的click 已经被插件自动捕获和处理了。

这是使用.validate() 方法的正确方法...

$(document).ready(function() {

    $("#form1").validate({  // initialize the plugin                 
        // rules & options                          
    });

});

使用 jQuery 1.10.2 和 jQuery Validate 1.11.1 的工作 DEMO,用 IE 8 测试1http://jsfiddle.net/jsDzU/show

1 使用安装在 Windows XP SP3 中的真实版本的 IE 8 进行测试。永远不要假设另一个 IE 版本中的“IE 8 模式”是真实事物或“模拟器”的准确表示——它不是。 Microsoft provides free VPC hard drive images for accurate testing in each IE version.

【讨论】:

  • 我正在使用 jquery 1.10.2 和 jQuery Validation Plugin - v1.11.1 并且遇到了同样的问题。您的示例不适用于 ie8。即使输入为空,警报也会触发。
  • 在ie7上更糟糕。有一个 javascript 错误,脚本只是冻结。我认为它是跨浏览器兼容的。有没有办法解决这个问题?
  • @tylik,我不确定你在做什么,但我的链接已经在 Windows XP 中运行的 IE 8 的真实版本中进行了测试......并且运行良好。如果您在另一个版本的 IE 中以“IE8 模式”进行测试,那么您的测试方法是错误的。各种“IE 模式”并不能准确地代表这些旧版本的行为。
  • 对不起,你是对的。这真的很烦人,模拟器的行为不应该像他们应该的那样。嗯,它是 IE...
  • @tylik,这就是我的观点。这些模拟都不够好。 真正测试浏览器版本的唯一方法是在该浏览器版本中。由于大多数人不希望运行多个 Windows 安装,VPC 是一个完美的解决方案,尽管性能直接取决于您的硬件。 VPC 运行的是真正的浏览器版本,而不是模拟。由于“cmets”不适合讨论,这是我对此事的最后回复。
【解决方案2】:

是的,它适用于“jquery-1.4.4.min.js”

你可以在这里测试

demo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-07
    • 2011-09-08
    • 1970-01-01
    • 1970-01-01
    • 2018-07-08
    • 1970-01-01
    相关资源
    最近更新 更多