Как получить доступ к старым и новым значениям, прежде чем отправлять с помощью Jedible
Вопрос
У меня есть поле, которое обновляется Jedible. Я хочу вывести предупреждающее сообщение перед отправкой обновлений, если значение будет уменьшено (что приведет к потере данных), но не в случае его увеличения.
Это кажется хорошим кандидатом на функцию jeditable в Onsubmit, которую я могу счастливо вызвать. Я могу получить новое значение от $ ('input', this) .val (), но как мне получить исходное значение, с которым можно сравнить его в этом контексте?
...
С момента публикации приведенного выше объяснения / вопроса я предложил своего рода решение. Изменив вызов в jQuery.ready от
$('#foo').editable(...);
к
$('#foo').hover(function(){
var old_value = $(this).text();
$(this).editable('ajax.php', {
submitdata {'old_value':old_value}
});
});
Я могу использовать настройки.submitdata.old_value в методе Onsubmit.
Но наверняка должен быть лучший способ? Jeditable должен все еще иметь старую ценность, спрятанную где -то, чтобы иметь возможность вернуть ее. Таким образом, возникает вопрос, как я могу получить доступ к этому из функции Onsubmit?
Заранее большое спасибо за любые предложения.
Решение
Вот мой редактируемый (он использует функцию подчиненного):
$(function () {
$('.editable').editable(submitEdit, {
indicator: '<img src="content/images/busy.gif">',
tooltip: '@Html.Resource("Strings,edit")',
cancel: '@Html.Resource("Strings,cancel")',
submit: '@Html.Resource("Strings,ok")',
event: 'edit'
});
/* Find and trigger "edit" event on correct Jeditable instance. */
$(".edit_trigger").bind("click", function () {
$(this).parent().prev().trigger("edit");
});
});
В подчиненном Orignvalue является исходным значением перед редактированием
function submitEdit(value, settings) {
var edits = new Object();
var origvalue = this.revert;
var textbox = this;
var result = value;
// sb experiment
var form = $(this).parents('form:first');
// end experiment
edits["field"] = form.find('input[name="field"]').val();
edits["value"] = value;
var returned = $.ajax({
url: '@Url.Action("AjaxUpdate")',
type: "POST",
data: edits,
dataType: "json",
complete: function (xhr, textStatus) {
// sever returned error?
// ajax failed?
if (textStatus != "success") {
$(textbox).html(origvalue);
alert('Request failed');
return;
}
var obj = jQuery.parseJSON(xhr.responseText);
if (obj != null && obj.responseText != null) {
alert(obj.responseText);
$(textbox).html(origvalue);
}
}
});
return (result);
}
Другие советы
Гораздо более простым решением было бы добавить эту строку в вашу переменную отправки.
"submitdata": function (value, settings) {
return {
"origValue": this.revert
};
}