jQuery Validation插件:添加验证规则但需要隐藏焦点上的消息

时间:2015-07-31 10:46:55

标签: jquery jquery-validate required onfocus lost-focus

调用以下方法以根据某些条件强制执行控件

addRequired = function ($ele, msg, min, minMsg) {
    $ele.rules('add', {
        required: true,
        min: min,
        messages: {
            required: msg,
            min: minMsg
        }
    });

    $.validator.unobtrusive.parseElement($ele.get(0));
}

和调用代码

if (requiredOptions["CompanyName"]) {
    addRequired($('#CompanyName'), 'Company is required');
}
if (requiredOptions["SiteName"]) {
    addRequired($('#SiteNameDD'), 'Enter a Site');
}

验证工作完美。但要求是当控制(例如CompanyName)集中时,所需的消息应该消失。基本上,只要所需的控件集中,就会出现错误消息。要求是在焦点或表单提交事件上显示消息。我怎么能实现这个目标?

更新

从@Praveen_Kumar提到的解决方案中我得出了以下更改

addRequired = function ($ele, msg, min, minMsg) {
        $ele.rules('add', {
           ... ... ...
        });

        // Remove the validator message on focus.
        $ele.on("focus", function () {
            var thisRule = $.validator.staticRules($ele.get(0));
            thisRule.required = false;            
         });

        // Add the validator message on blur.
        $ele.on("blur", function () {
            var thisRule = $.validator.staticRules($ele.get(0));
            thisRule.required = true;
        });
       ...    
}

1 个答案:

答案 0 :(得分:1)

在这里添加一些代码:

str.replaceAll("[^\\p{L}\\s]+.*", "")

这里addRequired = function ($ele, msg, min, minMsg) { $ele.rules('add', { required: true, min: min, messages: { required: msg, min: minMsg } }); // Remove the validator message on focus. $ele.one("focus", function () { $.validator.hideMessage($ele.get(0)); // Replace this with the right method. $ele.off("focus"); }); $.validator.unobtrusive.parseElement($ele.get(0)); } 是一个伪函数,它接受被解析并被视为无效的元素。您尚未提供验证器插件URL以正确指导您确切的隐藏功能。