jEditable - Как обойти отправку в событии выбора даты при выборе

Я использую jeditable с datepicker, и я хочу сделать некоторую проверку, как только пользователь выберет дату, прежде чем отправлять ее в базу данных. Я просмотрел jeditable-datepicker.js и понял, что отправка запускается после того, как произошло событие onselect. Как я могу включить условия в событие, чтобы неверная дата не отправлялась в базу данных?

Вот моя пробная версия с использованием события onsubmit:

 $('.expirydatepicker').editable('@(Url.Action("Edit", "Stock"))',
    {
        type: 'datepicker',
        indicator: 'saving...',
        event: 'dblclick',
        tooltip: 'Double click to edit...',
        style: 'inherit',
        width: ($('.datepicker').width() - 10) + "px",
        onsubmit: function (settings, td) {
            var tid = $(td).attr('id');
            //alert(tid);
            $.ajax({
                async: false,
                url: '/Stock/CompareDate',
                type: 'GET',
                data: { id: tid },
                success: function (result) {
                    if (result < 0) {
                        alert("Expiry dare cannot be earlier than storage date");
                        return onSelect(false);
                    }
                    else {
                        return true;
                    }
                }
            });
        }
    });

функция jEditable-datepicker:

/* 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',
    onSelect: function() {
      // clicking specific day in the calendar should
      // submit the form and close the input field
      form.submit();
    },

Я хочу знать, могу ли я в любом случае «остановить» событие onselect, если ввод недействителен? Надежда может получить некоторую помощь здесь... спасибо....


person shennyL    schedule 19.10.2011    source источник


Ответы (3)


попробуйте что-то вроде этого:

plugin : function(settings, original) {
..
$(this).find('input').datepicker().bind('click', function(e) {
   //e.preventDefault() // also test this
   return false;
})
person Marknl    schedule 19.10.2011

Можете ли вы просто проверить, действительна ли выбранная дата, и только отправить и сформировать, если это так?

onSelect: function(dateText, inst) {
    if (/* dateText is valid */) {
        form.submit();
    }
}
person William Niu    schedule 20.10.2011
comment
привет, я пробовал что-то подобное, но я не понимаю, почему я не могу переопределить метод onselect из плагина. Даже если я закомментирую все события onselect в скрипте плагина, форма все равно отправится!!............ - person shennyL; 21.10.2011
comment
Вы имеете в виду, что после выбора даты в календаре форма по-прежнему отправляется, даже если вы прокомментировали событие onselect? - person William Niu; 21.10.2011
comment
вам нужно нажать кнопку «Обновить» после внесения любых изменений. - person William Niu; 22.10.2011
comment
привет, на самом деле я уже вставил весь соответствующий код в свой вопрос - person shennyL; 23.10.2011

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

person shennyL    schedule 04.11.2011