Я не могу настроить тестовую страницу, но вот идея. Я посмотрел на источник jEditable, и у него есть событие под названием onedit. Это событие срабатывает до фактического редактирования. Подпишитесь на это событие и измените содержимое ячейки на обычный текст. В функции обратного вызова переформатируйте значение, чтобы получить ссылку mailto: *. 1001 *
Что-то вроде:
$(document).ready(function() {
var init;
$('table#data tbody td').editable( 'media/support/save.php', {
event: "dblclick",
submit: "OK",
//I am assuming that 'this' will refer to the 'TD' which user double clicked on.
//If not, change the code accordingly.
onedit : function(settings, self) { $(this).html($(this).text()); }
onreset : function(settings, original)
{
//We have added 'emailAddress class to our TD in initial setup.
//When user cancels editing and the cancelled cell has the 'emailAddress' class,
//we format it to have mailto link.
if($(this).hasClass('emailAddress'))
{
$(this).html('<a href="mailto:' + $(this).text() + '">' + $(this).text() + '</a>')
}
},
cancel: "Cancel",
tooltip: "Double-click to edit...",
"callback": function(sValue,y) {
alert('The server has been updated.');
//TODO: If the edited cell was the email cell, if yes, then format the email with mailto link.
var aPos = init.fnGetPosition(this);
init.fnUpdate( sValue, aPos[0], aPos[1] );
}
});
var init = $("table#data").dataTable({
"sDom": 'lfr<"clear">tip<"clear">T',
"bStateSave": true,
"fnDrawCallback": function() {
$('table#data tbody tr').each(function() {
var email = $(this).find('td:last');
$(email)
.html('<a href="mailto:' + $(email).text() + '">' + $(email).text() + '</a>')
.addClass('emailAddress'); //Add 'emailAddress' class so that we can idenfiy this cell during onreset of jEditable.
});
},
"aaSorting": [[ 0, "asc" ]]
});
});
РЕДАКТИРОВАТЬ 1:
При просмотре источника jEditable запускает событие onreset, если пользователь нажимает кнопку отмены. Я обновил код выше. Попробуй.
РЕДАКТИРОВАТЬ 2:
Изменен код, так что когда пользователь отменяет редактирование, адрес электронной почты форматируется правильно. Чтобы достичь этого, мы добавляем класс «emailAddress» к TD, который содержит электронные письма. Этот класс проверяется в методе onreset.