Jquery模糊不保留突出显示的文本框颜色

时间:2014-08-11 07:42:12

标签: javascript jquery asp.net-mvc-3

我在MVC3视图页面中有以下密码控制,并从控件本身调用onblur函数,

@Html.PasswordFor(m => m.CurrentPass, new Dictionary<string, object> { { "id", "txtCurrentPass" }, { "name", "CurrentPass" }, { "Class", "textBoxPlacHold fieldLblMargin" }, { "onblur", "$(this).currPasswordBlur();" } })

下面是我正在调用的jquery函数,

$.fn.currPasswordBlur = function () {        
        if ($('[id="txtCurrentPass"]').val() == '') {
            $('#PasswordChangeErr').html("Please enter current password.");
            $('[id="txtCurrentPass"]').addClass('outLineRed');            
            $('#PasswordChangeErr').show();            
            $('#MsgSucc').attr("style", "background-color:White;");           
            $("html, body").animate({ scrollTop: 0 }, "slow");            
            return false;            
        }
        else {            
            $('#PasswordChangeErr').hide();            
            $('[id="txtCurrentPass"]').removeClass('outLineRed');
            $('#MsgSucc').attr("style", "background-color:#dfe5e6;");
        }

下面是以红色突出显示文本框,当执行到达返回false语句时,突出显示的文本框将消失。

  

$( '[ID = “txtCurrentPass”]')addClass( 'outLineRed');

我需要保留突出显示的文本框,即使我来自文本框。

1 个答案:

答案 0 :(得分:1)

首先,您可以为htmlAttributes声明中的PasswordFor参数提供一个匿名对象,这会将其缩短很多。此外,您应该使用jQuery来绑定您的事件,而不是笨拙的on*属性:

@Html.PasswordFor(m => m.CurrentPass, new { "id" = "txtCurrentPass", "name" = "CurrentPass", @"class" = "textBoxPlacHold fieldLblMargin" })

您当前的jQuery将该函数创建为插件,但它只涉及由id定义的单个元素,因此没有插件的意义。您可以将代码放在一个blur事件处理程序中:

$('#txtCurrentPass').blur(function() {
    var $el = $(this);
    if ($el.val() == '') {
        $('#PasswordChangeErr').html("Please enter current password.").show();
        $el.addClass('outLineRed');                
        $('#MsgSucc').css("background-color", "white");           
        $("html, body").animate({ scrollTop: 0 }, "slow");          
    }
    else {            
        $('#PasswordChangeErr').hide();            
        $el.removeClass('outLineRed');
        $('#MsgSucc').attr("style", "background-color:#dfe5e6;");
    }
});

Example fiddle

请注意,按id选择时,您应该在ID上使用#前缀,因为 比属性选择器更快