我有一個簡單形式的 ASP.Net Core/Razor 應用程式:
<form method="post" id="my_form">
...
</form>
我正在使用內置的客戶端驗證來處理<input ...required>或<input type="number" min="0" ...>(微軟在他們的 MSVS 專案模板中包含 jQuery 驗證)。這一切都很好。
我還在某些欄位上做一些額外的自定義驗證。我想為用戶提供重新填寫表單或完全退出表單并重定向到不同頁面的選項:
<script type="text/javascript">
// Form submit
$('#my_form').on('submit', function (e) {
console.log('validateForm...');
//debugger;
// Check basic form validation
let isValid = e.target.checkValidity();
if (!isValid)
return false;
// Validate custom field
let myCustomField = $('#myCustomField').val();
if (myCustomField != 'xyz') {
let response = confirm('MyCustom field is invalid: Update webform?');
if (response) {
return false; // Return to webform
} else {
window.location.href = "./"; // Redirect to app's landing page
}
...
return true;
}
});
</script>
問題:
window.location.href不會立即重定向我。驗證 JS 繼續,表單被 POST 到服務器。
問:我應該改用location.replace()之類的東西嗎?還是我應該采取完全不同的方法?
uj5u.com熱心網友回復:
回答馮瑞凱:不,阿賈克斯會打敗我想要做的事情的全部目的。我希望允許用戶選擇 a) 回傳 Web 表單以“更正”它,或者 b) 完全離開表單,然后跳轉到不同的頁面。阿賈克斯不會這樣做。
我決定“平局”,如果發現任何錯誤,就讓我的 JS 驗證函式回傳“false”。這總是將用戶回傳到 Web 表單。他們可以“修復”問題,也可以手動瀏覽到不同的頁面。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/454904.html
標籤:javascript html asp.net 核心 验证
