Hello StackOverflow 커뮤니티!인라인 편집 : onBlur가 onClick을 트리거하지 못하게합니다 (jQuery)
현재 내 필요에 맞지 않는 인라인 편집 용 jQuery 플러그인을 만들고 있습니다.
어쨌든, 내가 곧 길이 편집에 관한 다음 (부울) 옵션이 작동하도록되어 사용자주고 싶습니다
- 으로 submit_button을
- reset_on_blur
는의 사용자를 가정 해 봅시다 제출 버튼 (submit_button = true)을 원하고 인라인 입력 요소가 포커스를 잃는 즉시 제거되기를 원합니다 (reset_on_blur = true). 버튼에 등록 된 onClick 핸들러와 입력 요소에 등록 된 onBlur 핸들러로 연결됩니다.
그러나 사용자가 버튼을 클릭 할 때마다 onBlur 핸들러가 트리거되고 onClick 이벤트가 발생하기 전에 편집 모드가 유지됩니다. 이로 인해 제출이 불가능 해집니다.
참고로, 편집 모드에서 HTML은 다음과 같습니다
<td><input type="text" class="ie-input" value="Current value" /><div class="ie-content-backup" style="display: none;">Backup Value</div><input type="submit" class="ie-button-submit" value="Save" /></td>
를 따라서 초점이 손실 된 경우가 제출 '버튼을 활성화하는 동안 나는 및 onblur 처리기에서 확인할 수있는 방법이 그 편집 있도록 제출 버튼의 onClick 이벤트가 트리거되기 전에 모드가 남아 있지 않습니까?
$ ('body'). click() 핸들러를 등록하여 블러를 시뮬레이트하고 클릭 한 요소를 추적 할 수 있었지만 작동하지 않아 결과적으로 오히려 이상한 버그 :
$('html').click(function(e) { // body doesn't span over full page height, use html instead
// Don't reset if the submit button, the input element itself or the element to be edited inline was clicked.
if(!$(e.target).hasClass('ie-button-submit') && !$(e.target).hasClass('ie-input') && $(e.target).get(0) != element.get(0)) {
cancel(element);
}
});
jEditable은 다음 코드를 사용합니다. 나는 지연 때문에 이러한 접근법을 좋아하지 않는다. 나는 왜 이것이 작동하는지 이해하지 못하게합니다. ;)
input.blur(function(e) {
/* prevent canceling if submit was clicked */
t = setTimeout(function() {
reset.apply(form, [settings, self]);
}, 500);
});
미리 감사드립니다.