Asp.net mvc ASP.NET MVC不引人注目的验证不适用于IE9

Asp.net mvc ASP.NET MVC不引人注目的验证不适用于IE9,asp.net-mvc,jquery-validate,client-side,unobtrusive-validation,Asp.net Mvc,Jquery Validate,Client Side,Unobtrusive Validation,我正在编写其他人编写的代码。 这是一个重置密码表单。当前的客户端验证适用于大多数浏览器,包括IE10和IE11。在IE 9上,确认密码不匹配错误会持续显示,即使我确信我在两个字段中键入的内容完全相同。 守则: <div class="form-group"> <div class="input-group input-phone"> <span class="input-group-addon"><span cla

我正在编写其他人编写的代码。 这是一个重置密码表单。当前的客户端验证适用于大多数浏览器,包括IE10和IE11。在IE 9上,确认密码不匹配错误会持续显示,即使我确信我在两个字段中键入的内容完全相同。 守则:

<div class="form-group">
        <div class="input-group input-phone">
            <span class="input-group-addon"><span class="glyphicon glyphicon-lock"></span></span>
            <input type="password" id="Password" name="Password" class="form-control input-lg default-focus" data-val="true" data-val-required="Password is required." placeholder="Password" autocomplete="off">
        </div>
        <div class="field-validation-valid" data-valmsg-for="Password" data-valmsg-replace="true"></div>
    </div>

    <div class="form-group form-group-login-bottom">
        <div class="input-group input-pin">
            <span class="input-group-addon"><span class="glyphicon glyphicon-lock"></span></span>
            <input type="password" id="ConfirmPassword" name="ConfirmPassword" class="form-control input-lg" data-val="true" data-val-equalto="Confirm Password does not match." data-val-equalto-other="*.Password" placeholder="Confirm Password" autocomplete="off">
        </div>
        <div class="field-validation-valid" data-valmsg-for="ConfirmPassword" data-valmsg-replace="true"></div>
    </div>
target是带有
id密码的输入字段。在IE 10和IE 11上,发出警报
target.val()

返回输入的正确值。在IE9上,它返回空。无法理解为什么它在IE 9上不起作用。任何建议都会很有帮助。

您使用的jQuery、jQuery validate和ASP MVC版本是什么? 我刚刚使用您的html创建了这些库,包括这些库的最新版本(jquery 2.1.0、validate 1.13和validate unobtrusive from MVC 5)。我验证了IE9上的验证工作(我的版本是9.0.8112.16421)

然而,我发现这意味着你可能会发现这个错误在IE9与不正确的html在你的网页上。您可以确保没有任何打开的标记(例如没有相应的

)。例如,如果在fiddle中,您只需在
之前添加一个
,验证将在IE9中停止工作,但在Firefox中不会。(请看这个在IE9上不起作用的)

如果这样做没有帮助,我会检查库版本以及您可能在页面中加载的任何其他可能会干扰的库(如果您可以将问题复制到小提琴中,那就太好了!)。如果没有任何帮助,您可以尝试从fiddle中删除validate unobtrusive库(它添加在外部引用中),并取消JS代码的注释以手动使用验证插件。至少可以让您了解问题是与jquery.validate有关,还是与Microsoft的jquery.validate-unobtrusive有关:

//This is commented in the fiddle. Only uncomment to try jquery.validate without jquery.validate-unobtrusive
$(document).ready(function () {
    $("#testForm").validate({
        debug: false,
        rules: {
            Password: {
                required: true
            },
            ConfirmPassword: {
                required: true,
                equalTo: "#Password"
            }
        },
        submitHandler: function (form) {
            // just for the fiddle demo
            alert('valid form submitted');                 
            return false;
        }
    });
});

您的“工作”JSFIDLE工作正常。我看了看“不正确”的JSFIDLE。我可以看到验证完全停止工作。我的问题不是这样。对我来说,即使我在两个字段中键入相同的内容,它也会显示错误消息,表明它们不匹配。我使用的jquery版本是v1.11.1,jquery验证插件是1.11.1。我不确定这个版本是否适合不引人注目的人。谢谢你的建议。我将尝试创建一个JSFIDLE来复制这个问题。您使用的是什么版本的MVC?MVC版本是5.2.0.0我已经创建了一个带有jquery 1.11.0、jquery.validate 1.11.1和最新的unobtrusive的JSFIDLE。如果这也行得通,那么您的页面上肯定有其他内容(另一个JS库或html代码的其余部分)可能是jquery.placeholder库中的一个吗?看见顺便说一下,您在控制台中没有记录任何错误,不是吗?
//This is commented in the fiddle. Only uncomment to try jquery.validate without jquery.validate-unobtrusive
$(document).ready(function () {
    $("#testForm").validate({
        debug: false,
        rules: {
            Password: {
                required: true
            },
            ConfirmPassword: {
                required: true,
                equalTo: "#Password"
            }
        },
        submitHandler: function (form) {
            // just for the fiddle demo
            alert('valid form submitted');                 
            return false;
        }
    });
});