jQuery UI 날짜 선택기가 대화 상자에서 자동으로 열립니다.
jQuery 대화 상자 개체 내에서 사용되는 날짜 선택기가 있습니다.대화상자 콘텐츠의 원본은 다음과 같이 로드됩니다..load()대화 상자에서 텍스트 입력용 날짜 선택기를 만드는 스크립트를 만들었습니다.
$("#date").datepicker({ ... });
처음 대화 상자를 열면 모든 것이 정상이지만 닫았다가 다시 열면 날짜 선택기가 자동으로 트리거됩니다(그런 옵션은 없습니다).autoOpen:false이 문제를 예방할 수 있는 방법이 있습니까?또, 무엇을 잘못하고 있습니까?
내가 찾은 훨씬 간단한 방법:
$("#dialogPopper").click(
function() {
$("#date").datepicker("disable");
$("#dialog").dialog("open");
$("#date").datepicker("enable");
return false;
}
);
대화상자 시작 부분에 날짜 선택 필드를 놓으면 날짜 선택 필드가 자동으로 날짜 선택 필드가 열립니다.대화상자의 시작 부분에 숨겨진 입력을 배치할 수 있습니다.
<input type="text" style="width: 0; height: 0; top: -100px; position: absolute;"/>
나는 이 문제를 정확히 가지고 있었고 tvanfosson의 기술을 약간 변형시켜 해결했다.어떤 이유에서인지 아래 날짜 선택 필드에 "클릭" 이벤트를 수동으로 첨부해야 했습니다.
$('#dialog').dialog({
open: function(event, ui) {
$(ui).find('#date').datepicker().click(function(){
$(this).datepicker('show');
});
},
close: function(event,ui) {
$(ui).find('#date').datepicker('destroy');
}});
(죄송합니다.tvanfosson의 투고에 코멘트로 투고하고 싶었지만, 필요한 담당자가 없습니다.)
대화상자가 닫힐 때 날짜 선택기를 삭제하고 대화상자 작성 시 스크립트로 포함하지 않고 대화상자의 열려 있는 이벤트핸들러에 날짜 선택기를 작성하는 것을 검토해 주세요.
$('#dialog').dialog({
open: function(event, ui) {
$(ui).find('#date').datepicker();
},
close: function(event,ui) {
$(ui).find('#date').datepicker('destroy');
}
});
재현할 필요가 있는지 확인하기 위해 다양한 이벤트/방법을 시험해 볼 수도 있지만, 이 방법이 효과적이라고 생각합니다.
그 이유는 모달 형식의 첫 번째 항목은 날짜 선택 도구 텍스트 필드이며 모달 실행 시 활성 컨트롤이 날짜 선택 도구에 포함되어 있기 때문입니다.
두 가지 대안을 찾았습니다.
필드의 순서를 변경합니다.1등을 하려면 데이트 피커가 있는 사람을 피하세요.
날짜 선택기를 별도의 코드의 필드에 설정하지 말고 대화 상자를 여는 함수 내에서 수행합니다(열린 직후).
$("#dialog").dialog("open");).
선택기가 자동으로 열리는 이유는 처음 선택기를 연 후에도 입력 필드가 계속 포커스를 유지하기 때문입니다.
흐리게 할 필요가 있습니다.
$input.datepicker({
onClose: function(dateText) {
$(this).trigger('blur');
}
});
대화 상자의 초점일 뿐입니다.api.jqueryui.com/dialog/
대화 상자를 열면 포커스가 다음 항목과 일치하는 첫 번째 항목으로 자동으로 이동합니다.
- 자동 포커스 속성을 가진 대화상자의 첫 번째 요소
- 대화상자 콘텐츠 내의 첫 번째 : 탭 가능 요소
- 대화상자 버튼페인 내의 첫 번째 : 탭 가능 요소
- 대화상자의 닫기 버튼
- 대화 상자 자체
은 ★★★★★★★★★★★★를 사용하는 것입니다.autofocus" " 에서의 datepicker.
저도 비슷한 문제가 있었어요.jquery UI 대화상자에 jquery 날짜 선택기가 있습니다.대화상자를 열었을 때 IE에서 달력 선택기가 자동으로 열리고 있었습니다.Firefox나 Chrome에서는 그렇지 않았습니다.$(문서)에서 작성 시 날짜 선택기를 비활성화하여 문제를 해결했습니다.다음과 같이 준비:
$('.ConfirmMove #from').datepicker({
duration: ''
}).datepicker('disable');
그런 다음 이 날짜 선택기가 포함된 대화상자를 열었을 때 대화상자의 열린 이벤트 핸들러에서 해당 날짜 선택기를 활성화했습니다.
$(".ConfirmMove").dialog({
close: function() {
$('.ConfirmMove #from').datepicker('disable');
},
open: function() {
$('.ConfirmMove #from').datepicker('enable');
}
});
또한 대화 상자를 닫을 때 다시 비활성화해야 합니다.
이렇게 하면 대화상자를 열고 닫을 때마다 날짜 선택기를 삭제하거나 다시 만들지 않아도 됩니다.
이것이 내가 문제를 해결하기 위해 한 일이다.
이 코드는 대화 상자 생성에 있습니다.
document.getElementById('date').disabled = true;
setTimeout('document.getElementById("date").disabled = false;', 100);
이렇게 하면 대화 상자가 열리면 다른 컨트롤에 초점이 맞춰집니다.
타임아웃을 테스트하여 더 적은 지연을 얻을 수 있지만, 저는 100으로 괜찮았습니다.
제 결정은 jsonx와 Pawel Furmaniak의 솔루션을 결합하는 것입니다.
<input id='fake-input' type='text' style='width: 0; height: 0; top: -100px; position: absolute;'/>
$( '.datepickerclass' ).datepicker({
onClose: function() {
$('#fake-input').trigger("focus");
}
오래된 질문인 것은 알지만, 나에게 효과가 있는 솔루션 중 하나는 달력 아이콘을 트리거하는 것이었습니다.
$( ".date" ).datepicker({
showOn: "button",
buttonImage: "../css/imgs/calendar.gif",
buttonImageOnly: true
});
이니셜라이저에 애니메이션 옵션을 입력했을 때 어떤 이유로 인해 캘린더가 다음 동작을 하지 않게 되었습니다.
show Anim:떨어지다
소스코드로부터 알았다.jQuery.Dialog 트랙 " " "focusin, 및 「」를 설정합니다focus대화상자가 활성화 상태가 된 후 해당 요소에서 이벤트가 발생합니다.이 동작을 방지하려면 포커스를 맞추고 있는 요소에서 버블이벤트 전파를 정지합니다.
$("#input").on("focusin", function (e) {
return false; // or e.stopPropagation();
}).datepicker();
- 두 가지 사이에는 점에 유의하시기 바랍니다.
jQuery(복수) - 티켓 http://bugs.jqueryui.com/ticket/9125
언급URL : https://stackoverflow.com/questions/932420/jquery-ui-datepicker-opens-automatically-within-dialog
'programing' 카테고리의 다른 글
| WebSockets 프로토콜 vs HTTP (0) | 2023.02.28 |
|---|---|
| 기존 Ruby on Rails 앱에서 블로그 만들기 (0) | 2023.02.28 |
| $.ajax();와 $.ajaxSetup()의 차이. (0) | 2023.02.28 |
| 반응 선택:적어도 비동기 모드에서 목록을 펼치는 오른쪽 버튼을 삭제할 수 있는 방법이 있습니까? (0) | 2023.02.28 |
| 콘텐츠를 지정하는 jsonp POST 요청 작성 방법jQuery로 입력하시겠습니까? (0) | 2023.02.28 |