Я использую следующее для встроенного редактирования.
Я хочу, чтобы ajax срабатывал при нажатии клавиши или пользователь щелкал (размывает)
При нажатии клавиши ввода все в порядке, но AJAX не срабатывает при размытии?
// inline editing
$(document).on('blur keypress', 'span[contenteditable=true]', function (e) {
if (e.type == 'blur' || e.keyCode == '13') {
$.ajax({
type:'POST',
url:'/ajax/actions/editGenre.php',
data:{
content: $(this).text(),
id: $(this).attr('rowId')
},
success:function(msg){
$('span[contenteditable=true]').removeClass('inlineEdit').addClass('editAble');
}
});
e.preventDefault();
}
});
Исправлено: JSFiddleWiddleBiddleBoDiddle (прокомментировал ваш AJAX для скрипки и использовал предупреждение для демонстрации)
$(document).on('focusout keypress', 'span.inlineEdit', function (e) {
e.preventDefault();
if (e.type == 'focusout' || e.keyCode == '13') {
$.ajax({
type: 'POST',
url: '/ajax/actions/editGenre.php',
data: {
content: $(this).text(),
id: $(this).attr('rowId')
},
success: function (msg) {
$('span.inlineEdit').removeClass('inlineEdit').addClass('editAble');
}
});
}
});
inlineEdit
- $('span.editAble').click(function() { $(this).removeClass('editAble').addClass('inlineEdit'); });
Событие Blur не срабатывает для тегов span. Используйте что-то еще, предназначенное для получения фокуса.