2012-04-03 48 views
-1

我有一個文本框,其中的文本將使用帶有一些正則表達式的函數進行格式化。該功能經過測試並正常工作。 在下面的代碼中添加應該將焦點事件綁定到特定文本框以重新格式化文本的代碼時,該函數不會被觸發。Jquery Focusout not triggering

$(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"; 
    } 
}; 

我在做什麼錯或我忘了什麼。

+0

你可以粘貼PostcodeFormatting功能? – dekomote 2012-04-03 08:00:58

回答

1

嘗試組合這兩個事件綁定,看看它是否有效。由於事件冒泡,我可能傾向於模糊,但是當輸入失去焦點時,兩者都應該發射。

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

這是什麼適合我(測試)。模糊或事件的內容的工作方式類似於:

腳本:

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

function PostcodeFormatting(pc) { 
    ... 
} 

檢查你的HTML以及拼寫和區分大小寫:

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

如上所述,事件根本沒有被觸發。我添加了一個console.log語句來確保。 – 2012-04-03 08:30:30

+0

看到我上面編輯的答案。經過測試和工作。 – 2012-04-03 19:02:24

+0

在示例程序中,事情似乎很有用。必須找出劇本其他部分的錯誤。非常感謝。 – 2012-04-04 07:02:48