需求:輸入框 onblur 時即時驗證(如用戶名唯一性),不刷新頁面,提示訊息顯示於輸入框下方。
<input type="text" id="username" name="username" onblur="checkUsername()" />
<span id="usernameMsg" style="color:red;"></span>
<script>
function checkUsername() {
const val = $('#username').val().trim();
if (!val) { $('#usernameMsg').text('用戶名不能為空'); return; }
$.get('/checkUsername', { username: val }, function(resp) {
if (resp.exists) {
$('#usernameMsg').text('用戶名已存在');
} else {
$('#usernameMsg').text('用戶名可用').css('color', 'green');
}
}, 'json');
}
</script>
@GetMapping("/checkUsername")
@ResponseBody
public Map checkUsername(@RequestParam String username) {
boolean exists = userService.existsByUsername(username);
return Map.of("exists", exists);
}
@Unique 自定義註解查資料庫。jquery-validation + remote 規則,自動處理 AJAX 驗證與訊息顯示。前端驗證僅為使用者體驗,**後端必須再次驗證**,防止繞過前端直接發送請求。