Jquery Focusout没有触发

时间:2012-04-03 07:54:36

标签: jquery

我有一个文本框,文本将使用带有一些正则表达式的函数进行格式化。该功能经过测试,运行正常。 在下面添加应该将焦点事件绑定到特定文本框以重新格式化文本的代码时,但不会触发该函数。

$(document).ready(function() {
    $('#PostcodeTextBox').focusout(function() {
        $('#PostcodeTextBox').val(PostcodeFormatting($('#PostcodeTextBox').val()));
    });
    $('#PostcodeTextBox').blur(function() {
        $('#PostcodeTextBox').val(PostcodeFormatting($('#PostcodeTextBox').val()));
    });
})


function PostcodeFormatting(pc) {
    var reg = /^([1-9]\d{3})\s?([a-z]{2})$/i;
    var postcode = $.trim(pc);
    if (postcode && postcode.match(reg)) {
        return postcode.replace(reg, "$1$2").toUpperCase();
    }
    else {
        return "Postcode incorrect";
    }
};

我做错了什么或忘记了什么。

1 个答案:

答案 0 :(得分:1)

尝试组合这两个事件绑定并查看它是否有效。我可能会因为事件冒泡而倾向于模糊,但是当输入失去焦点时,两者都应该触发。

$(function() {
    $('#PostcodeTextBox').on('blur', function() {
        $(this).val(PostcodeFormatting($(this).val()));
    });
})

这对我有用(经过测试)。 Blur或Focusout的工作方式类似。:

<强>脚本:

$(function() {
    $('#PostcodeTextBox').on('blur', function() {
        $(this).val(PostcodeFormatting($(this).val()));
        console.log('hit');
   });
});

function PostcodeFormatting(pc) {
    ...
}

检查您的HTML以及拼写和区分大小写:

<input type="text" id="PostcodeTextBox" />