2
至少IE9和IE10有奇怪的行爲。輸入字段的變化和模糊事件不會被觸發
我有四個輸入字段,並訂閱他們的更改事件。我有邏輯,禁用它的變化事件處理程序內的第一個輸入字段。 所以案例: 我在第一個輸入字段中輸入一些值,然後我點擊第二個輸入字段。因爲第一個輸入的結果更改事件處理程序被觸發。所以我的光標在第二個輸入字段裏面,我輸入了一些值。之後,我點擊第三個輸入字段。所以,預期的行爲是第二個輸入字段的更改事件驅動程序被觸發,但是,它沒有被解僱。 因此,現在光標位於第三個輸入字段中,我輸入值並單擊第四個字段。結果,第三場的變更事件被激發。
結論:這種行爲我只在IE9 -IE10中複製。沒有在IE8中測試過。在每個輸入字段的Chrome更改處理程序中被觸發。所以可能有人有這種情況? IE中有錯誤嗎?
這裏是鏈接到jsfiddle
HTML
<div id="content">
<div>
<label>First field</label>
<input type="text" id="one" tabindex="1" />
</div>
<div>
<label>Second field</label>
<input type="text" id="two" tabindex="2" />
</div>
<div>
<label>Thitd field</label>
<input type="text" id="three" tabindex="3" />
</div>
<div>
<label>Fourth field</label>
<input type="text" id="four" tabindex="3" />
</div>
<div id="result">
</div>
</div>
的Javascript
$('input').on('blur', function (evt) {
var $input = $(evt.target);
var msg = '<div style="color:red;">' + $input.prop('id') + ' field blur event fired. Value is: ' + $input.val() + '</div>';
addMsgToResult(msg);
});
$('#one').on('change', function (evt) {
var $input = $(evt.target);
addChangeEventMessage($input);
$input.prop('disabled', true);
});
$('#two, #three, #four').on('change', function (evt) {
var $input = $(evt.target);
addChangeEventMessage($input);
});
function addChangeEventMessage($input){
var msg = '<div style="color:blue;">' +$input.prop('id') + ' field change event fired. Value is: ' + $input.val()+ '</div>';
addMsgToResult(msg);
}
function addMsgToResult(msg){
$('#result').append(msg);
console.log(msg);
}
的JS是不一樣的是什麼在你的小提琴中。 – Blazemonger
你爲什麼要設置'$ input = $(evt.target)'而不是'$ input = $(this)'? – Blazemonger
我認爲沒關係。它不會影響結果。 – msevera