jQuery + jEditable - Запретить отправку для пользовательского ввода - PullRequest
1 голос
/ 01 ноября 2011

Я использую плагин jEditable с указателем даты, но мне нужно проверить дату, прежде чем отправить ее в базу данных.Поэтому я редактирую jEditable-datepicker.js примерно так:

submit: function (settings, original) {
    var form = this;
    var tid = $(original).attr('id');
    var input = $(original).find('input');
    var newDate = input.val();
    alert('id' + tid);
    alert('newdate' + newDate);
    $.ajax({
        async: false,
        url: '/Stock/CompareDate',
        type: 'GET',
        data: { id: tid, inputDate: newDate },
        success: function (result) {
            alert(result);
            if (result < 0) {
                alert("Expiry dare cannot be earlier than storage date");
                return false;
            }
            else {
                alert('else');
                return true;
            }
        }
    });
},

/* attach jquery.ui.datepicker to the input element */
plugin: function (settings, original) {
    var form = this,
      input = form.find("input");

    // Don't cancel inline editing onblur to allow clicking datepicker
    settings.onblur = 'nothing';

    datepicker = {
        dateFormat: 'D, dd M yy'
    };

    input.datepicker(datepicker);
}

Я получаю предупреждение в операторе if, что означает, что метод проверки работает, но недопустимое значение по-прежнему отправляется в базу данных.Я не знаю, почему возвращаемое значение false не останавливает действие отправки. Я пытался решить эту проблему в течение длительного времени, но сейчас я подошел ближе к решению.Я просто не знаю, как я могу остановить отправку в операторе if ...

Здесь действительно нужна помощь ... Спасибо ....

(ОБНОВЛЕНИЕ: добавить в html)

Мое поле даты находится в таблице:

        <td id="sdat@(item.FoodID)" class="storagedatepicker">
              @String.Format("{0:ddd, d MMM yyyy}", item.StorageDate)
        </td>
        <td id="edat@(item.FoodID)" class="expirydatepicker">
              @String.Format("{0:ddd, d MMM yyyy}", item.ExpiryDate)

Вызов jeditable выглядит так:

    $('.expirydatepicker').editable('@(Url.Action("Edit", "Stock"))',
    {
        type: 'datepicker',
        indicator: 'saving...',
        event: 'dblclick',
        tooltip: 'Double click to edit...',
        submit: '<img src="../../Content/Add_in_Images/ok.png" alt="ok"/>',
        cancel: '<img src="../../Content/Add_in_Images/cancel.png" alt="cancel"/>',
        style: 'inherit'

    });

Ответы [ 2 ]

0 голосов
/ 18 мая 2016

Поздний ответ, но, возможно, все еще полезен для других, просто return false; из onsubmit функции параметра, чтобы избежать его отправки, например:

$('.editable').editable('/someurl', {

    ... // all your jeditable settings

    onsubmit: function (settings, original) {

        if (<conditions to not submit>)
            return false;

    }
});
0 голосов
/ 05 ноября 2011

Получите его, не пытаясь остановить отправку, но замените входное значение значением по умолчанию, если проверка не удалась. Спасибо

...