【问题标题】:Clear error message (jquery) on input field focus清除输入字段焦点上的错误消息(jquery)
【发布时间】:2011-06-22 13:35:03
【问题描述】:
function customAlert(inputID,msg){
   var div = $(".errorPopup");
   div.css({"display":"block"});
   $("#"+inputID).addClass("CO_form_alert").parent().addClass("alertRed");
   if (div.length == 0) {
     div = $("<div class='ErrorPopup' onclick='$(this).hide();'></div>");
     $("body").prepend(div);
   } 
   div.html(msg)
}

我正在使用上面的 jquery 来劫持我的表单的 javascript 验证和错误处理。它运行良好,但一旦用户单击返回字段进行更正,我需要清除错误消息和样式。

编辑:

根据下面的答案,让它工作了 - 但我需要删除 IE 领域的焦点(它已经在 Firefox 中这样做了) -

<!--Jquery function to override JS alert with DOM layer alert message-->
function customAlert(){
    var args = arguments;
    if(args.length > 1) {
        // check that custom alert was called with at least two arguments
        var msg = args[0];
        $("li").removeClass("alertRed");
        $("input").removeClass("CO_form_alert");
        $("select").removeClass("CO_form_alert");
        var div = $(".errorPopup");
        div.css({"display":"block"});
        if (div.length == 0) {
            div = $("<div class='errorPopup' onclick='$(this).hide();'></div>");
            $("body").prepend(div);
        }
        div.html(msg);
        for(var i = 1; i < args.length; i++) {
            var inputID = args[i];
           $("#"+inputID).addClass("CO_form_alert").parent().addClass("alertRed");
            $("#"+inputID).focus(function(){
                $(this).unbind('focus'); // remove this handler
                $('.errorPopup').hide(); // hide error popup

            });
        }
     }
}

【问题讨论】:

    标签: javascript jquery validation focus


    【解决方案1】:
    $(":input").keypress(function(event) {
        $(".ErrorPopup").html("");
    });
    

    【讨论】:

      【解决方案2】:

      在输入的焦点事件上隐藏错误弹出 div:

      $('#' + inputID).focus(function() { $('.ErrorPopup').hide(); });
      

      【讨论】:

        【解决方案3】:

        试试这个:

        function customAlert(inputID,msg){
           var div = $(".errorPopup");
           div.css({"display":"block"});
           $("#"+inputID).addClass("CO_form_alert").parent().addClass("alertRed");
           if (div.length == 0) {
             div = $("<div class='errorPopup' onclick='$(this).hide();'></div>");
             $("body").prepend(div);
           } 
           div.html(msg);
        
           $("#"+inputID).focus(function(){
                $(this).unbind('focus'); // remove this handler
                $(this).removeClass("CO_form_alert")
                       .parent().removeClass("alertRed"); // undo changes
                $('.errorPopup').hide(); // hide error popup
           });
        
        }
        

        【讨论】:

        • @Jason——errorPopup 有 2 个不同的名称(一个是 ErrorPopup,另一个是 errorPopup)——我让它保持一致,现在应该可以使用了
        • 添加:$('.ErrorPopup').hide(); div.css({"display":"none"});
        • @Jason 不要使用div 按照我之前的评论中所述进行更改,它应该可以工作:-)
        • 我真的应该使用这个@东西应该我@Neil:P
        • @John 没关系。它通常只发生在我大声说出我的名字时,而不是当它清楚地写在那里时:-P
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多