내가 한 번 입력 상자에 텍스트 상자를 변환하는 jQuery 플러그인을 쓰고 있어요. 이것은 사용자가 HH : MM 형식으로 시간을 입력 할 수 있음을 의미합니다. 이 프로세스의 일부는 콜론 (:)을 올바른 위치에 삽입하는 것입니다. keyup에서 사용자가 2 개의 숫자를 입력했는지 확인하고 입력 된 값에 콜론을 추가하십시오.
문제 :
이 방법은 누군가가 텍스트 상자에 플러그인을 적용하는 경우를 제외하고 잘 작동뿐만 아니라 코드는 텍스트 상자의 값을 업데이트 할 때 발생하지 않습니다 핸들러 onchange를 handler.This onchange를 사용자 정의를 가지고 싶어 프로그래밍도 텍스트 상자가 포커스를 잃을 때 시작됩니다.
나의 이해 : 내가 틀렸다면 내가 여기 추측하고있어
, 그래서 저를 수정하시기 바랍니다.
- 아마 텍스트 상자 내부
"_value"
가 편집을 시작하기 전에 텍스트 상자에 값을 보유 필드 (공개 키의 값 속성에서 차별화하는 데 강조)가 있습니다. 포커스가 texbox를 떠날 때 JS 엔진은 텍스트 상자 의 현재 값이 텍스트 상자의"_value"
과 일치하는지 확인합니다. 다른 경우onchange
이벤트가 발생합니다. - 아마도 일반적인 기본 키 입력을 사용하여 값을 변경하면
"_value"
값만 변경되므로onchange
이 실행됩니다. 하지만 아마도 JS를 통해 변경된 값은 값과"_value"
및 모두을 수정하므로 onchange 이벤트가 실행되지 않습니까?
해결안 :이 값에 무관으로
흐림 이벤트가 발생. 따라서 명시 적으로 blur 이벤트에서 변경 이벤트를 발생시킬 수 있습니다. 그러나 해킹이며 흐림 및 변경의 의미를 없애기 때문에이 작업을 수행하고 싶지 않습니다.
관련 링크 : 나는 같은 질문을 SO에 대한 몇 가지 링크를 찾았지만 아무 대답 (IMHO)이 우아한 또는 올바른 솔루션을 제공하지
.
Javascript : onchange event does not fire when value is changed in onkeyup event
https://stackoverflow.com/questions/14410870/using-both-onchange-and-onkeyup-in-ie8
Javascript: "onchange" event does not work with "value" change in "text input" object
약식 CODE :
여기에 내가 본 사람 중 일부입니다$(document).ready(function() {
$("input").keyup(function() {
this.value = '*' + this.value;
// this changes the value, but does not fire the onchange event
// and it also does not fire it when the textbox loses focus.
// blur fires though.
});
$("input").change(function() {
alert('in change');
});
$("input").blur(function() {
alert('in blur');
});
});
뿐인 : 테스트 완료
http://jsfiddle.net/sajjansarkar/vHgst/4/
브라우저 : IE8,10 및 크롬. 파이어 폭스에서 작품 (!) 당신은 jquery.trigger와 프로그램 이벤트를 트리거 할 수
당신이'ele.value을 설정하면 변경 이벤트가 발생하지 않습니다 '는 일반적인 행동입니다. 참고로, 둘 다, 입력이 불투명 해지면 파이어 폭스에서 '변경'이벤트가 발생합니다. –
@FelixKling 일반적인 행동 인 경우 어떻게하면 onchange 동작을 유지할 수 있습니까? FF에서 작동한다는 재미있는 관찰은 질문을 편집 할 것입니다 –