2010-07-28 3 views
3

웹 사이트 용 CMS의 사용자 지정 코드를 작성하고 있습니다. 사용자가 제출 단추 (jQuery UI로 작성)를 클릭하면 단추의 click 이벤트를 호출하고 단추의 click 이벤트는 양식을 제출하는 제출 이벤트를 호출합니다.jQuery에서 .submit()이 호출되면 .blur()를 재정의하는 방법은 무엇입니까?

해당 양식은 특정 필드를 검사하여 텍스트가 있는지 확인하고 문제가 해결 될 때까지 오류 메시지를 표시하고 제출 버튼을 비활성화합니다. 이렇게하려면 현재 .focus()를 사용합니다. 내부에 .blur() 함수가있어 오류가 수정되었는지 확인하고 통지가 있으면 제거합니다 (다른 오류가 없다면 버튼을 다시 활성화합니다).).

이제 문제는 사용자가 언제든지 필드를 편집하면 양식 데이터를 제출하지 않고 .blur() 함수가 컨트롤을 사용한다는 것입니다. (코드 작성 방식에 따라) 두 번째 클릭으로 양식 데이터를 제출해야합니다.

jQuery에서 .submit()을 .blur()보다 우선 적용 할 수있는 방법이 없으므로이 문제가 발생할 수 없습니다. (지금은 이것을 사용하여 사용자에게 단계를 수행하지 말라고 할 수 있습니다) ?

(너희들은 내가 여기에 일부 비트를 게시 시도 할 수 있습니다 코드가 필요합니다.)

+0

코드를 포함 마십시오, 그것은 제출되지 못하는 흐림에 무슨 일이 일어나고 있는지 질문에서 분명하지 않다. –

+0

정확히 같은 문제가 있습니다. – jeje

답변

0

어젯밤에 그것에 대해 생각한 후에 나는 blur()를 호출하기 전에 에러가 보이는지 아닌지를 확인하기 위해 빠른 체크를했다면 문제가 해결 될 것이라고 생각했다. (빠른 테스트를했는데).

이벤트 전파 중단에 대한 제안을 보내 주셔서 감사합니다.

2

입력 필드에서 blur 이벤트를 제거하고 양식 유효성 검사 기능의 onFocusout 이벤트를 사용하려고했습니다. 그 해결책은 나를 위해 일했습니다.

기타 최상의 솔루 션은 버튼 클릭 이벤트를 발생시키기 전에 블러 이벤트 동작을 지연시키는 타이머를 설정하는 것입니다. 타이머 var에 setTimer = 대한

가 // 네임 스페이스 { 타이머 : 널 (null) }

 $('input,select').blur(function() { 
      setTimer.timer = setTimeout(function() { 
       functionCall(); 
      }, 1000); 
     }); 

     $('input,select').focus(function() { 
      setTimer.timer = setTimeout(function() { 
       functionCall(); 
      }, 1000); 
     }); 

     $("#btn").click(function() { 
      clearTimeout(setTimer.timer); 
      functionCall(); 
     }); 
관련 문제