Frage

Ich habe ein Feld, das von Jeditable aktualisiert wird. Ich möchte eine Warnmeldung ausgeben, bevor ich Aktualisierungen einreiche, wenn der Wert reduziert wird (was dazu führen würde, dass Daten verloren gehen), aber nicht, wenn sie erhöht werden.

Dies scheint ein guter Kandidat für die Onsubmit -Funktion von Jeditable zu sein, die ich glücklich auslösen kann. Ich kann den neuen Wert von $ ('Input', this) .val () erhalten, aber wie erhalte ich den ursprünglichen Wert, an den ich in diesem Zusammenhang vergleichen kann?

...

Seit ich die obige Erklärung / Frage veröffentlicht habe, habe ich eine Art Lösung entwickelt. Durch Ändern des Invokation in jQuery.ready von

$('#foo').editable(...);

zu

$('#foo').hover(function(){
  var old_value = $(this).text();
  $(this).editable('ajax.php', {
     submitdata {'old_value':old_value}
  });
});

Ich kann Einstellungen verwenden.

Aber es muss sicher ein besserer Weg sein? Jeditable muss immer noch den alten Wert irgendwo versteckt haben, um ihn zurückversetzen zu können. Die Frage stellt sich also, wie ich auf diese aus der Onsubmit -Funktion zugreifen kann.

Vielen Dank im Voraus für alle Vorschläge.

War es hilfreich?

Lösung

Hier ist mein editierbares (es wird die Funktion eingereicht):

   $(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");
        });
    });

In untergestattet Original ist der ursprüngliche Wert vor der Bearbeitung

    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);
    }

Andere Tipps

Eine viel einfachere Lösung wäre, diese Zeile Ihrer SubmitData -Variable hinzuzufügen

"submitdata": function (value, settings) {
      return {
           "origValue": this.revert
      };
 }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top