저는 프로젝트에서 일하고 있으며 입력 된대로 필드에 사용자가 입력 한 데이터의 존재를 감지하기 위해 만든 jQuery 이벤트 처리기가 있습니다. 그 일이 왜 이상한 지에 대해 조금 당황 스럽다.필드에 값의 존재 여부가 jQuery 테스트에서 제대로 작동하지 않습니다.
내가 작성한 루틴은 다음과 같습니다.
$(document).ready(function() {
$('#salary_bal').on('change blur keydown', function() {
if($(this).val.length === 0 || $(this).val() === '') {
setSubmitState('off');
} else {
setSubmitState('on');
}
});
});
function setSubmitState(state) {
switch(state) {
case 'on':
$('#fsSubmit').attr('disabled', false);
$('#fsSubmit').addClass('button');
$('#fsSubmit').addClass('cursor');
break;
case 'off':
$('#fsSubmit').attr('disabled', true);
$('#fsSubmit').removeClass('button');
$('#fsSubmit').removeClass('cursor');
break;
}
}
당신은 아마 setSubmitState의 호출에 의해 추측 수 있듯이 바운드 필드에 값이없는 경우,이 양식의 제출 버튼을 비활성화해야합니다.
내가 말했듯이 이것은 "일종의"일을 올바르게합니다. 걸리는 부분은 새로 입력 된 문자 대신에 입력 된 이전 문자에 응답하는 것처럼 실제로 작동한다는 것입니다.
다음은 동작 순서와 해당 결과입니다.
- 필드에 'x'를 하나만 입력하십시오.
- 제출 단추가 사용 가능하게되지 않습니다.
- 필드에 다른 'x'를 입력하십시오.
- 제출 단추가 사용으로 변경됩니다.
- 'x'를 백 스페이스로 삭제하십시오.
- 제출 버튼을 사용할 수 있습니다.
- 다시 공백으로 남겨둔 백 스페이스.
- 제출 버튼을 사용할 수 있습니다.
- 백 스페이스 한 번 더.
- 제출 단추가 사용 안함으로 변경됩니다.
나는이 문제를 디버깅하려고 벽에 내 머리를 두드리는 된 내 바퀴를 회전의 피곤하고 있습니다. (벽의 두통은 말할 것도 없습니다.) 누구든지이 문제에 대한 해결책을 제시 할 수 있습니까?
Keydown이 keyup이어야하므로 새로 삽입 된 캐릭터가 이벤트를 발생시킵니다. Keydown은 키 업 전에 실행되고 키 업 후에 문자에 입력됩니다. –
keyup을 사용하면 해당 기능이 없다는 오류가 표시됩니다. – Skittles
긁힘. O.o 나는 그것이 왜 효과가 있었는지 모른다. 나는 전에 그 오류를 얻고 있었지만, 지금은 그렇지 않습니다. 그것은 단지 열매입니다. 감사합니다 – Skittles