jQuery Validation Engine 是功能強大的表單驗證插件,但官方範例為 PHP 後端,ASP.NET 需調整 JSON 回傳格式才能正常運作。本文記錄修改插件核心 JS 並搭配 .ashx 實現 AJAX 遠端驗證 (如帳號唯一性檢查) 的完整步驟。
jquery.validationEngine.js (核心)jquery.validationEngine-zh_CN.js (中文規則/訊息)validationEngine.jquery.css (樣式)$(document).ready(function () {
$("#formID").validationEngine({
ajaxFormValidation: true,
validationEventTriggers: "keyup blur",
promptPosition: "topRight",
onValidationComplete: function (form, status) {
if (status) form.submit(); // 全部通過才送出
}
});
});
<input type="text" id="txtAccount" name="account"
class="validate[required,ajax[ajaxAccountCheck]]" />
"ajaxAccountCheck": {
"url": "Handlers/ValidateHandler.ashx",
"alertTextLoad": "* 檢查中,請稍候...",
"alertText": "* 此帳號已被註冊",
"alertTextOk": "* 帳號可使用",
"extraData": "type=account" // 額外參數
}
public class ValidateHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "application/json";
string fieldId = context.Request["fieldId"]; // txtAccount
string fieldValue = context.Request["fieldValue"]; // 使用者輸入值
string extraData = context.Request["extraData"]; // type=account
bool isAvailable = CheckAccountAvailable(fieldValue); // 自訂檢查邏輯
// 關鍵:回傳格式必須符合修改後的 JS 期望結構
var result = new
{
jsonValidateReturn = new object[] { fieldId, extraData, isAvailable }
};
context.Response.Write(JsonConvert.SerializeObject(result));
}
private bool CheckAccountAvailable(string account)
{
// 實際查詢資料庫...
return !account.Equals("admin", StringComparison.OrdinalIgnoreCase); // 示範
}
public bool IsReusable => false;
}
搜尋 $.ajax({ 找到第二處 (約行 800+),修改 success 回調:
success: function (json) {
// 原版:var errorFieldId = json[0]; // PHP 陣列格式
// 修改為:解析自訂 JSON 物件結構
var errorFieldId = json.jsonValidateReturn[0];
var errorField = $("input[id='" + errorFieldId + "']");
if (errorField.length === 1) {
var status = json.jsonValidateReturn[2]; // true/false
var msg = json.jsonValidateReturn[1]; // extraData 或訊息鍵
if (!status) {
options.ajaxValidCache[errorFieldId] = false;
options.isError = true;
// 顯示錯誤提示...
} else {
options.ajaxValidCache[errorFieldId] = true;
// 顯示成功提示或關閉...
}
}
errorField.trigger("jqv.field.result", [errorField, options.isError, msg]);
}
keyup/blurValidateHandler.ashx?fieldId=txtAccount&fieldValue=xxx&extraData=type=account{"jsonValidateReturn":["txtAccount","type=account",true]}jsonValidateReturn → 顯示綠色/紅色提示onValidationComplete 確認全部通過




[id, msg, bool],ASP.NET 易產生物件,需統一格式。JsonConvert.SerializeObject。fieldId 必須與前端 input[id] 完全一致。ajaxFormValidation: true 僅在表單送出時觸發遠端驗證;即時驗證需靠 class="validate[ajax[...]]"。