하나는 언제 호출되고 다른 하나는 호출됩니까? onChange가 호출되지만 onBlur가 호출되지 않는 상황이 있습니까?
답변
onBlur
당신은 반드시 변경 한 값없이 멀리 개체에서 이동 한 경우 이벤트가 발생합니다.
그만큼 onChange
이벤트는 필드 값을 변경하고 포커스를 잃을 때만 호출됩니다.
quirksmode의 이벤트 소개를 살펴볼 수 있습니다 . 브라우저와 상호 작용할 때 브라우저에서 일어나는 일에 대한 정보를 얻을 수있는 좋은 장소입니다. 그의 책도 좋습니다.
답변
onblur는 필드가 포커스를 잃을 때 발생하고 onchange는 해당 필드의 값이 변경되면 발생합니다. 그러나 이러한 이벤트가 항상 동일한 순서로 발생하는 것은 아닙니다.
Firefox에서 변경된 필드를 탭하면 onchange가 발생하고 onblur가 발생하며 일반적으로 IE에서 동일하게 수행됩니다. 그러나 탭 대신 Enter 키를 누르면 Firefox에서는 onblur 후 onchange가 실행되고 IE는 일반적으로 원래 순서로 실행됩니다. 그러나 IE도 먼저 블러를 발생시키는 경우를 보았으므로 조심하십시오. onblur 또는 onchange가 다른 것보다 먼저 발생한다고 가정 할 수 없습니다.
답변
구체적으로 만드는 예. 따라서 선택이있는 경우 :
<select onchange="" onblur="">
<option>....
</select>
은 onblur()
멀리 탐색 할 때 호출된다. 은 onchange()
당신이 선택에서 다른 옵션을 선택할 때 호출되는 – 즉, 당신이 그것을 현재로 선정 무엇을 변경합니다.
답변
Firefox에서 onchange는 탭하거나 입력 필드 외부를 클릭 할 때만 실행됩니다. Onblur도 마찬가지입니다. 차이점은 onblur가 현장에서 변경했는지 여부에 관계없이 실행된다는 것입니다. ENTER가 이들 중 하나 또는 둘 다를 실행할 수 있지만 예상치 못한 제출을 방지하기 위해 양식에서 ENTER를 비활성화하면 알 수 없습니다.
답변
onBlur는 더 이상 해당 분야에 초점이 맞지 않는 경우입니다.
onblur 속성은 현재 요소에있는 onBlur 이벤트 핸들러 코드 (있는 경우)를 반환합니다.
onChange는 필드 값이 변경 될 때입니다.
답변
여기에서 onBlur ()가 상관없이 실행된다는 점에 주목하는 것이 중요하다고 생각합니다.
이것은 유용한 스레드이지만 명확하지 않은 유일한 것은 onBlur ()이 매번 실행된다는 것입니다.
onChange ()는 값이 변경 될 때만 실행됩니다.
답변
onChange는 필드 내의 무언가가 변경되는 경우입니다. 예를 들어 텍스트 입력에 무언가를 작성합니다.
onBlur는 필드에서 포커스를 떼어 놓을 때입니다. 예를 들어 텍스트 입력을 작성하고 클릭 한 경우입니다.
따라서 실제로는 거의 동일하지만 onChange가 onBlur가 입력을 변경해야하는 방식으로 동작하는 방식으로 작동합니다.