首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jquery验证插件。在字段失去焦点之前,消息不可见

Jquery验证插件。在字段失去焦点之前,消息不可见
EN

Stack Overflow用户
提问于 2013-03-29 01:07:10
回答 2查看 861关注 0票数 1

我使用的是jquery验证插件。我发现了一个问题,这个问题只会在我部署我的站点时发生,而且即使是这样,它似乎也是间歇性的。当我提交包含无效字段的表单时,它会阻止提交,但所有无效字段都不会显示指示它们无效的消息。如果我将光标放在字段中,然后按tab键离开,则会出现验证消息。截取屏幕似乎还会更新显示,并使消息出现。这个问题出现在多个字段类型上,但这里只有一个作为示例。

代码语言:javascript
复制
<input name="ProjectDescription" class="required" id="ProjectDescription" style="text-transform: uppercase;" type="text" maxLength="15" value=""/>

下面是我的validate调用。

代码语言:javascript
复制
        $('#RequestForm').validate({
        ignore: ":hidden",
        ignoreTitle: true,
        submitHandler: function () {
            var f = $('#RequestForm');
            var action = '/Request/Request'
            var serializedForm = f.serialize();
            $.post(action, serializedForm,
                function (rtn) {
                    $("#Submit").removeAttr('disabled');
                    if (rtn.Success == true) {
                        var data = rtn.Result;
                        $('form')[0].reset();
                        $.jGrowl("Submitted Successfully", { life: 10000 });
                    }
                    else {
                        $.jGrowl(rtn.ErrorMessage, { sticky: true });
                    }
                });
            $("#Submit").attr('disabled', 'disabled');
            return false;
        },
        invalidHandler: function (event, validator) {
            debugger
            console.log(validator);
        }
    });

和我的按钮处理程序

代码语言:javascript
复制
    $('#Submit').click(function () {
        $('#RequestForm').submit();

    });

我不能在小提琴或其他任何地方复制这个问题。在编写此请求的过程中,它再次停止发生,但我没有进行任何代码更改。任何可能导致这种行为的帮助都将不胜感激。我主要在IE9中进行测试

更新:

我一直无法找到任何可靠的方法来复制这个问题,但如果可以的话,我会继续尝试制造一个小提琴。在相同的浏览过程中,它会突然开始工作。通常,通过关闭并重新打开浏览器,我可以让行为再次出现3-4次尝试。基于这些评论,我尝试在场上调用模糊和隐藏/显示。这两种方法都不会导致出现错误消息。按print screen按钮或将光标放在字段中并可靠地按Tab键,都会显示验证消息。有关该解决方案的一些其他信息:

这个页面是由MVC3生成的。我经常使用javascript和ajax来显示/隐藏字段。

字段的显示/隐藏发生在ajax回调中。

此特定字段由显示/隐藏

代码语言:javascript
复制
                       if (project.PAContractClassID == "CAPITAL") { // capital
                            $('.capitalOnly').show();
                            $('.expenseOnly').hide();
                        }
                        else if (project.PAContractClassID == "EXPENSE") {  // expense
                            $('.expenseOnly').show();
                            $('.capitalOnly').hide();
                        }

我在MVC中生成字段的代码

代码语言:javascript
复制
@Html.TextBoxFor(m => m.ProjectDescription, new { @name="ProjectDescription", @class = "required", maxlength = "15", style = "text-transform:uppercase;" })           
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-04 03:31:37

经过大量测试,我在_Layout.cshtml中隔离了一个对jquery.unobtrusive-ajax的引用,因为它干扰了jquery validate的行为。在删除了对jquery.unobtrusive-ajax的引用之后,我再也没有得到这个错误。我将继续做一些测试,看看我添加这些引用的顺序是否会有所不同,但我不想让这个问题悬而未决。感谢大家的建议。

票数 0
EN

Stack Overflow用户

发布于 2013-03-29 06:00:09

Sparky:如果提交按钮包含在<form></form>中,那么绝对不需要提供一个单击处理函数来提交表单。

如果你使用的不是提交按钮,而是一个type=button,那么试着使用type=submit,看看这个问题是否会消失。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15687931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档