情況1----input屬性中type=submit時驗證都可以起作用,但是彈出層表單的返回值不能獲取,所以用ajax二次提交后會出現重復添加數據的問題

情況2----input屬性中type=button時驗證部分起作用,其他正常,暫時看到的不起作用是required屬性不起作用,正則表達式可以完美提醒

初步判斷原因可能是用ajax+button表單並未完成提交,model的required屬性驗證必須在提交后台控制器后刷新提交頁面才會出現,但是button方式並刷新界面,正則表達式的就算不刷新界面,input失去焦點時也會判斷
問題找到了那就開始解決,既然沒有提交導致的驗證失效那就提交一次
如下代碼,控制器設置為返回ActionResult,如果驗證通過則直接添加返回Json對象執行success命令。如果后台驗證ModelState.IsValid未通過則返回View對象執行error命令。在error命令中提交表單,則有返回命令,完美解決問題。
$("#mysubmit").click(function () {
var index = parent.layer.getFrameIndex(window.name); //先得到當前iframe層的索引
$.ajax({
url: "/scjhtj/GC_info/",
type: "post",
dataType: "json",
data: $("#form1").serialize(),
success: function (data) {
if (data.Code == 0) {
parent.layer.close(index); //再執行關閉
parent.refreshProj(0, null);//0添加,1編輯,2查詢
parent.layer.msg(data.Msg), { time: 500 };
}
},
error: function (data) {
$("#form1").submit();
}
})

