오브젝트 "이름"의 유효성을 검사하여 고유한지 확인합니다. 이 작업을 수행하려면 jQuery bassisstance 유효성 검사 플러그인을 사용하고 있습니다. 나는 "이름"텍스트 필드에 이름을 입력 한 다음 바로 아래 정의 된 제출 버튼을 클릭하면양식을 유효성 검증하는 백그라운드에서 ajax 호출을 수행 할 때 Click 이벤트가 발생하지 않음 (또는 무시 됨)
jQuery.validator.addMethod("new_user_role_name_unique", function(value) {
var role_name_valid = true;
jQuery.ajax(
{
type: "GET",
async: false,
data: "name=" + encodeURIComponent(value),
url: '/user_roles/0/name_taken',
success: function (result) {
var taken = JSON.parse(result);
role_name_valid = !taken
}
});
return role_name_valid;
}, I18n.t('user_role_name_already_used'));
을 다음과 같이 내가 방법을 기대, 고유성 varify하는 검증 방법 중 동기 아약스 호출을 발행
<button id='user_role_add_button' class='rounded green' type='button' onclick="addUserRole()" name='add' value='add'>
<span><%= t(:user_role_add_button) %></span>
</button>
그러나 addUserRole 메서드는 호출되지 않습니다. 그러나 "이름"을 입력 한 다음 이름 텍스트 필드에 집중하지 않으면 버튼을 클릭하기 전에 메서드가 드라마없이 호출됩니다.
그래서 내 문제는 이름 텍스트 필드에 포커스가있을 때 addUserRole 메서드가 호출되도록 저장 단추를 두 번 클릭해야한다는 것입니다.
내 클릭 이벤트가 이러한 상황에서 첫 번째 클릭에서 손실 된 것으로 보이는 이유를 알고 있습니까? 나는 사용자가 버튼을 두 번 클릭하여 저장할 수 없습니다.
'async : false, '문제가 있습니다 – Rafay