html 입력이 있습니다.
<input type="text" id="txtCheckoutBCode" name="barcode" class="sfInputbox" />
이제 바코드 리더가 바코드를 읽고 바코드가 위의 텍스트 필드에 반영되는 동안 일부 ajax 호출을 실행하고 싶습니다.
다음 코드를 시도했습니다.
$('#txtCheckoutBCode').on('change', function() {
var me= $(this);
var number = 0;
number = $.trim(me.val());
if (number.length == 12) { // 12 coz my barcode is of length 12
//ajaxcall method
}
});
그러나 입력 필드에서 포커스가 변경된 경우에만 발생합니다. 또한,
$('#txtCheckoutBCode').on('keyup', function() {
var me= $(this);
var number = 0;
number = $.trim(me.val());
if (number.length == 12) { //12 coz my barcode is of length 12
//ajax call method
}
});
이것은 ajax 호출을 두 번 실행하고 나는 이것을 선호하지 않습니다.
입력 필드가 바코드로 채워지 자마자 ajax 코드를 호출해야합니다. 그러나 두 번은 아닙니다.
먼저 입력과의 상호 작용 (예 : 붙여 넣기)을 감지하기 위해 propertychange keyup input paste
대신 대신 사용해야 합니다 keyup
. 그러나 특히 Firefox에서 이벤트를 두 번 트리거 할 수 있습니다. 나는 사용 keyup paste
하는 것이 좋습니다 .
change
말했듯이 입력이 초점을 잃을 때 트리거됩니다. keyup
키를 누를 때마다 트리거됩니다.
ajax 호출이 한 번만 실행되도록하려면 stopImmediatePropagation ()을 사용해보십시오 .
$('#txtCheckoutBCode').on('keyup paste', function(e) {
e.stopImmediatePropagation();
var me= $(this);
var number = 0;
number = $.trim(me.val());
if (number.length == 12) { // 12 coz my barcode is of length 12
//ajaxcall method
}
});
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다