情況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(); } })