1

datepickerで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ステートメントでアラートを受け取ります。これは、検証メソッドが機能することを意味しますが、無効な値は引き続きデータベースに送信されます。なぜreturnfalsedintが送信アクションを停止するのかわかりません。私は長い間この問題を解決しようとしましたが、これが解決策に最も近づく時間です。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'

    });
4

2 に答える 2

0

送信を停止しようとせずに機能させますが、検証が失敗した場合は、入力値をデフォルト値に置き換えます。ありがとう

于 2011-11-04T22:40:18.893 に答える
0

return false;遅い答えですが、提出を避けるためのパラメータ関数からだけで、他の人にとってはまだ役立つかもしれませんonsubmit。たとえば、次のようになります。

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

    ... // all your jeditable settings

    onsubmit: function (settings, original) {

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

    }
});
于 2016-05-18T18:21:13.433 に答える