我正在使用带有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语句中收到警报,这意味着验证方法有效,但无效值仍然会提交给数据库。我不知道为什么返回false dint停止提交动作..我试图解决这个问题很长一段时间,但这是我最接近解决方案的时间。我只是知道如何在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'
});
答案 0 :(得分:0)
通过不尝试停止提交来使其工作,但如果验证失败则将输入值替换为默认值。感谢
答案 1 :(得分:0)
迟到的答案,但可能对其他人有用,只需return false;
来自onsubmit
参数函数以避免其提交,例如:
$('.editable').editable('/someurl', {
... // all your jeditable settings
onsubmit: function (settings, original) {
if (<conditions to not submit>)
return false;
}
});