jQuery UI Datepicker 달력에서 선택한 날짜를 지우거나 재설정하려면 어떻게합니까?
날짜 선택기 달력 값을 어떻게 재설정합니까? .. 최소 및 최대 날짜 제한?
문제는 텍스트 상자 값을 삭제하여 날짜를 지울 때 이전 날짜 제한이 여전히 적용된다는 것입니다.
나는 문서 를 정리해 왔으며 해결책으로 튀어 나온 것은 없습니다. 또한 SO / Google 검색에서 빠른 수정을 찾을 수 없었습니다.
http://jsfiddle.net/CoryDanielson/tF5MH/
해결책:
// from & to input textboxes with datepicker enabled
var dates = $("input[id$='dpFrom'], input[id$='dpTo']");
// #clearDates is a button to clear the datepickers
$('#clearDates').on('click', function(){
dates.attr('value', '');
dates.each(function(){
$.datepicker._clearDate(this);
});
});
_.clearDate ()는 DatePicker 개체의 개인 메서드입니다. jQuery UI 웹 사이트의 공용 API에서는 찾을 수 없지만 매력적으로 작동합니다.
사용자가 입력 한 필터를 제거 할 수 있도록 datepicker를 비우는 것입니다. 인터넷 검색을 통해이 달콤한 코드를 찾았습니다.
읽기 전용 필드에서도 지우기 기능을 추가 할 수 있습니다. datepicker에 다음 코드를 추가하기 만하면됩니다.
}).keyup(function(e) {
if(e.keyCode == 8 || e.keyCode == 46) {
$.datepicker._clearDate(this);
}
});
사람들은 강조 표시 (읽기 전용 필드 포함) 한 다음 백 스페이스 또는 삭제 키를 사용하여 _clearDate
기능을 사용하여 날짜를 제거 할 수 있습니다.
시도해 보았 니:
$('selector').datepicker('setDate', null);
옵션을 다시 null로 설정하면됩니다.
dates.datepicker( "option" , {
minDate: null,
maxDate: null} );
jsfiddle을 변경했습니다 : http://jsfiddle.net/tF5MH/9/
$('.date').datepicker('setDate', null);
지우기 코드를 다음으로 변경해보십시오.
$('#clearDates').on('click', function(){
dates.attr('value', '');
$("input[id$='dpFrom'], input[id$='dpTo']").datepicker( "option", "maxDate", null );
$("input[id$='dpFrom'], input[id$='dpTo']").datepicker( "option", "minDate", null );
});
이것을 시도하면 날짜를 지우는 Jquery Calender에 지우기 버튼이 추가됩니다.
$("#DateField").datepicker({
showButtonPanel: true,
closeText: 'Clear',
onClose: function (dateText, inst) {
if ($(window.event.srcElement).hasClass('ui-datepicker-close'))
{
document.getElementById(this.id).value = '';
}
}
});
지우기를 클릭하면 datepicker의 최대 날짜 속성을 재설정합니다.
jquery 웹 사이트에서
Get or set the maxDate option, after init.
//getter
var maxDate = $( ".selector" ).datepicker( "option", "maxDate" );
//setter
$( ".selector" ).datepicker( "option", "maxDate", '+1m +1w' );
분명한 대답은 저에게 효과적이었습니다.
$('#datepicker').val('');
여기서 $ ( '# datepicker')는 입력 요소의 ID입니다.
너무 늦었다는 것을 알고 있지만 여기에 나를 위해 한 간단한 코드가 있습니다.
$('#datepicker-input').val('').datepicker("refresh");
Leniel Macaferi 솔루션의 수정 된 버전은 텍스트 필드에 포커스가 없을 때 IE8에서 "페이지 뒤로"바로 가기가되는 백 스페이스 키를 설명합니다 (날짜 선택기가 열려있는 경우처럼 보임).
그것은 또한 나를 위해 작동하지 않았기 val()
때문에 필드를 지우는 데 사용 합니다 _clearDate(this)
.
$("#clearDates").datepicker().keyup(function (e) {
// allow delete key (46) to clear the field
if (e.keyCode == 46)
$(this).val("");
// backspace key (8) causes 'page back' in IE8 when text field
// does not have focus, Bad IE!!
if (e.keyCode == 8)
e.stopPropagation();
});
내 datepicker 초기화는 다음과 같습니다.
dateOptions = {
changeYear: true,
changeMonth: true,
dateFormat: 'dd/mm/yy',
showButtonPanel: true,
closeText: 'Clear',
};
따라서 기본 '완료' 버튼에는 '지우기' 텍스트가 있습니다.
이제 datepicker.js 내부에서 내부 함수 '_attachHandlers'를 찾습니다.
_attachHandlers: function (inst) {
var stepMonths = this._get(inst, "stepMonths"),
id = "#" + inst.id.replace(/\\\\/g, "\\");
inst.dpDiv.find("[data-handler]").map(function () {
var handler = {
prev: function () {...},
next: function () {...},
hide: function () {
$.datepicker._hideDatepicker();
},
today: function () {...}
...
그리고 숨기기 기능을 다음과 같이 변경하십시오 .
...
hide: function () {
$.datepicker._clearDate(id);
$.datepicker._hideDatepicker();
},
...
I use this code to clear the field and all shenannigans. I Needed an empty field for my use case
jQuery.datepicker._clearDate(window.firstDay);
window.firstDay.datepicker('setDate',null);
window.firstDay[0].value = '';
For some reason .val('')
wouldn't work for me. But bypassing jQuery did it. In my opinion its a flaw that there is no .datepicker('clear') option.
My way to solve this problem
Change var 'controls' on ui.js
controls = (!inst.inline ? "<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>" +
this._get(inst, "closeText") + "</button>" + "<button type='button' class='ui-datepicker-close ui-datepicker-clear ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>" +
this._get(inst, "clearText") + "</button>" : "");
Then add a clearText var
this.regional[""] = { // Default regional settings
closeText: "Done", // Display text for close link
clearText: "Clear", // Display text for close link
prevText: "Prev", // Display text for previous month link
And before show function
$(".i_date").datepicker
(
{
beforeShow: function (input, inst)
{
setTimeout
(
function ()
{
$('.ui-datepicker-clear').bind('click', function() { $(input).val(''); });
},
0
);
}
}
);
$("#datepicker").datepicker({
showButtonPanel: true,
closeText: 'Clear',
onClose: function () {
var event = arguments.callee.caller.caller.arguments[0];
if ($(event.delegateTarget).hasClass('ui-datepicker-close')) {
$(this).val('');
}
}
});
In Firefox it does job for me in form (programmatically), where datepicker control is disabled by default:
$("#txtDat2").prop('disabled', false); //temporary enable controls<br>
$("#txtDat2").val("YYYY-MM-DD"); //reset date to dd.mm.yyyyy
$("#txtDat2").prop('disabled', true); //back to default state
Please try this solution it will work properly as I have tried
$('selector').datepicker('setStartDate', 0);
$('selector').datepicker('setEndDate', 0);
$('selector').datepicker('update');
'your programing' 카테고리의 다른 글
Eclipse "이 컴파일 단위는 Java 프로젝트의 빌드 경로에 없습니다." (0) | 2020.10.11 |
---|---|
jQuery 함수로 직접 자식 요소 만 가져 오는 방법 (0) | 2020.10.11 |
Sublime Text 2 태그에서 선택 줄 바꿈 (0) | 2020.10.11 |
Node.js에서 Sequelize를 사용하여 조인 쿼리를 만드는 방법 (0) | 2020.10.11 |
스위트에서 하나의 테스트 만 실행하려면 어떻게해야합니까? (0) | 2020.10.11 |