Выберите фокусировку не срабатывает, если не изменилось
Я пытаюсь заменить поле ввода списком выбора, когда поле ввода получает фокус. И вернитесь к старому значению, если ничего не изменилось.
Все работает как ожидалось, но когда я просто фокусирую поле ввода и затем щелкаю где-нибудь за пределами события focusout, оно не запускается.
Это умышленно или я что-то не так делаю?
HTML:
<div id=test>
<input type=text class=edit value=3 >
<input type=hidden class=temps>
</div>
И сценарий:
$(function (){
editfocus();
editout();
});
function editfocus(){
$('.edit').unbind('focusin');
$('.edit').bind('focusin', function() {
console.log(this);
var previous = this.value;
$(this).siblings('.temps').val(previous);
parentid=$(this).parent()[0].id;
$('#'+parentid).children('.edit').replaceWith('<select class="edit listme" ><option value=1 >one</option><option value=2 >two</option></select>');
editout();
});
}
function editout(){
$('.edit').unbind('focusout');
$('.edit').bind('focusout', function() {
parentid=$(this).parent()[0].id;
oldval=$(this).siblings('.temps').val();
$('#'+parentid).children('.edit').replaceWith('<input type=text class=edit value="'+oldval+'" />');
editfocus();
});
}
Пожалуйста, смотрите также этот jsfiddle: http://jsfiddle.net/mandropil/f9jN3/
1 ответ
Решение
Это легко исправить, вручную сфокусировав элемент select после замены ввода текста.
Так до editOut()
в editfocus()
функция, просто поместите:
$('select').focus();