2014-02-18 3 views
0

У меня есть приложение, мне нужно обновить номер, для этого, как я планировал, когда я нажимаю на контейнер чисел, iam преобразует его в поле ввода с jquery, затем на blur Я хочу отключить его как обычный текст внутри div контейнера, а затем запустить ajax для его обновления в БД, но в первый раз размытие даже не запускает Я имею в виду, если я нажму на forst time на номер, он преобразует его в поле ввода, и когда я выхожу из стороны (размытие), функция размытия не работает, если я снова нажимаю и выхожу из стороны, тогда он работает нормально.Событие Onblur не запускается в первый раз

Вот мой код.

<div onclick="wrap($(this))">999999999</div> 

<script>  
function wrap(sel) 
         { 
         sel.html('<input onblur="unwrap($(this));" value="'+sel.html()+'" />'); 
         sel.attr('onclick',''); 
         } 
         function unwrap(child) 
         { 
         alert('Unwrapping'); 
         } 
</script> 

Любая помощь/предложение было бы полезно.

+0

Вы можете создать скрипку? – Felix

+0

http://jsfiddle.net/sanplay/CR4Lv/ –

ответ

4

Это происходит потому, что при нажатии на div в первый раз, а поле ввода не задан фокус. Без фокуса нет размытия. Постарайтесь дать ему фокус после его создания ...

function wrap(sel) { 
    sel.html('<input onblur="unwrap($(this));" value="' + sel.html() + '" />'); 
    sel.attr('onclick', ''); 
    $("input").focus(); 
} 

Fiddle: http://jsfiddle.net/Pwb4y/

0

Попробуйте это .. Javscript первый, а затем DOM вызова

<script> 
    function wrap(sel) { 
    sel.html('<input onblur="unwrap($(this));" value="' + sel.html() + '" />'); 
    sel.attr('onclick', ''); 
} 

function unwrap(child) { 
    alert('Unwrapping'); 
} 
</script> 
<div onclick="javascript:wrap(jQuery(this));">999999999</div> 
Смежные вопросы