Javascript

Javascript ,javascript,jquery,jquery-ui,Javascript,Jquery,Jquery Ui,将此代码用于jquery时间选择器。 $(函数(){ $(“#日期选择器1”)。日期选择器({ 更改月份:false, 变化年:是的, showButtonPanel:false, 日期格式:“yy”, onClose:函数(dateText,inst){ $(此).datepicker('setDate',新日期('2017'); } }).focus(函数(){ $(“.ui datepicker month”).hide(); $(“.ui日期选择器日历”).hide(); }); });

将此代码用于jquery时间选择器。
$(函数(){
$(“#日期选择器1”)。日期选择器({
更改月份:false,
变化年:是的,
showButtonPanel:false,
日期格式:“yy”,
onClose:函数(dateText,inst){
$(此).datepicker('setDate',新日期('2017');
}
}).focus(函数(){
$(“.ui datepicker month”).hide();
$(“.ui日期选择器日历”).hide();
});
});

2018年

$('#datepicker').datepicker({
    format: "yyyy",
    weekStart: 1,
    orientation: "bottom",
    language: "{{ app.request.locale }}",
    keyboardNavigation: false,
    viewMode: "years",
    minViewMode: "years"
});

我也有同样的问题,经过一天的研究,我提出了这个解决方案:

/***(仅限月份和年份)***
$(函数(){
$(“#日期选择器1”)。日期选择器({
年份范围:“c-100:c”,
变化月:对,
变化年:是的,
showButtonPanel:是的,
closeText:“选择”,
当前文本:“今年”,
onClose:函数(dateText,inst){
var month=$(“#ui datepicker div.ui datepicker month:selected”).val();
var year=$(“#ui日期选择器div.ui日期选择器year:selected”).val();
$(this.val($.datepicker.formatDate('MM yy(MY)(MM/y)),新日期(年、月、1));
}
}).focus(函数(){
$(“.ui日期选择器日历”).hide();
$(“.ui日期选择器当前”).hide();
$(“#ui日期选择器分区”)。位置({
我的:“左上”,
在“左下角”,
其中:$(本)
});
}).attr(“只读”,假);
});
// --------------------------------
//***(仅限年份)***
$(函数(){
$(“#日期选择器2”)。日期选择器({
年份范围:“c-100:c”,
更改月份:false,
变化年:是的,
showButtonPanel:是的,
closeText:“选择”,
当前文本:“今年”,
onClose:函数(dateText,inst){
var year=$(“#ui日期选择器div.ui日期选择器year:selected”).val();
$(this.val($.datepicker.formatDate('yy',新日期(年,1,1));
}
}).focus(函数(){
$(“.ui datepicker month”).hide();
$(“.ui日期选择器日历”).hide();
$(“.ui日期选择器当前”).hide();
$(“.ui datepicker prev”).hide();
$(“.ui datepicker next”).hide();
$(“#ui日期选择器分区”)。位置({
我的:“左上”,
在“左下角”,
其中:$(本)
});
}).attr(“只读”,假);
});
// --------------------------------
//***(仅限年份,无控制措施)***
$(函数(){
$(“#日期选择器3”)。日期选择器({
日期格式:“yy”,
年份范围:“c-100:c”,
更改月份:false,
变化年:是的,
showButtonPanel:false,
closeText:“选择”,
当前文本:“今年”,
onClose:函数(dateText,inst){
var year=$(“#ui日期选择器div.ui日期选择器year:selected”).val();
$(this.val($.datepicker.formatDate('yy',新日期(年,1,1));
},
onChangeMonthYear:函数(){
$(此).datepicker(“隐藏”);
}
}).focus(函数(){
$(“.ui datepicker month”).hide();
$(“.ui日期选择器日历”).hide();
$(“.ui日期选择器当前”).hide();
$(“.ui datepicker prev”).hide();
$(“.ui datepicker next”).hide();
$(“#ui日期选择器分区”)。位置({
我的:“左上”,
在“左下角”,
其中:$(本)
});
}).attr(“只读”,假);
});
//-------------------------------------

jQuery UI日期选择器自定义选择

(仅限月份和年份:
id=“datepicker1”

(仅限年份:
input id=“datepicker2”

(仅限年份,无控件:
input id=“datepicker3”

试试这段代码,它对我有用:

$('#year').datepicker({
    format: "yyyy",
    viewMode: "years",
    minViewMode: "years"
});

我希望它也能为你带来神奇的效果。

你说的“仅显示年份”是什么意思?如果你只需要年份,为什么还需要一个日期选择器?只需显示一个文本框,并执行一些客户端验证来验证年份。或者使用下拉列表显示年份。保持简单:)最好有下拉列表。这将只选择年份,但如何从日期选择器中删除日历和月份?好吧,好吧,我误解了你的问题,现在我明白了。如果你只需要年份,为什么你需要日期选择器?只需显示一个文本框,并执行一些客户端验证来验证年份。或者使用下拉列表years@RuiJarimba在我的例子中,我有300年的时间来选择——不幸的是,在Mac电脑上,下拉菜单中没有滚动条功能,所以需要很长时间才能结束!这很好,但是你不能选择年份。我看过这个演示,也可以看到月份。我的意思是,我只想看一年。那糟糕的小提琴是什么?你也可以将#数据采集器id更改为.datapicker类。是的,你可以使用类而不是id
.ui-datepicker-calendar {
    display: none;
    }​
$("#datepicker").datepicker( "option", "dateFormat", "yy" );​
$(function() {
    $( "#datepicker" ).datepicker({dateFormat: 'yy'});
    });​
.ui-datepicker-calendar {
   display: none;
}
<label for="startYear"> Start Year: </label>
  <input name="startYear" id="startYear" class="date-picker-year" />   
 <script type="text/javascript">
        $(function() {
            $('.date-picker-year').datepicker({
                changeYear: true,
                showButtonPanel: true,
                dateFormat: 'yy',
                onClose: function(dateText, inst) { 
                    var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
                    $(this).datepicker('setDate', new Date(year, 1));
                }
            });
        $(".date-picker-year").focus(function () {
                $(".ui-datepicker-month").hide();
            });
        });

</script>
<input type="text" id="datepicker"/>
$(function() {
   $( "#datepicker" ).datepicker({dateFormat: 'yy',  changeYear: true,  changeMonth: false});
});
.ui-datepicker-calendar {
       display: none;
    }
    .ui-datepicker-month {
       display: none;
    }
    .ui-datepicker-prev{
       display: none;
    }
    .ui-datepicker-next{
       display: none;
    }
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Styling links</title>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
<style type="text/css">
hr{ 
    margin: 2px 0 0 0;
}
a{
    cursor:pointer;
}
#yearBetween{
    margin-left: 67px;
}

</style>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript" src="YearPicker.js"></script>
</head>
 <body>
   <div class="form-group col-sm-8" style="display:inline-flex;">
    <div style="display:inline-flex;">
        <label class="col-sm-4">Select Year</label>
        <input type="text" id="txtYear1" class="form-control cols-sm-2"/>
        <img id="yearImage" src="https://cdn4.iconfinder.com/data/icons/VISTA/accounting/png/400/calendar_year.png" style="cursor: pointer;width:50px; height:35px;"></img>
    </div>
    <div id="divYear1" style="display:none;border: 0.5px solid lightgrey; height:auto;">
    <div style="background:lightgrey;height: 12%;">
        <a id="btnPrev1" class="btnPrev glyphicon glyphicon glyphicon-menu-left" style="float:left;margin: 4px;"></a>
        <input style="text-align: center; width: 43%; border: none; margin-left: 20%;" type="text" id="yearBetween" class="btn-default"/>
        <a id="btnNext1" class="btnNext glyphicon glyphicon glyphicon-menu-right" style="float:right;margin: 4px;"></a>
    </div>
    <hr/>
    <div id="yearContainer" style="width:260px; height:auto;">
    </div>
</div>
</div>
 </body>
</html>
  $(document).ready(function(){
    // initial value of the start year for the dynamic binding of the picker.
    var startRange = 2000;

    // given the previous sixteen years from the current start year.
    $(".btnPrev").click(function(){
        endRange = startRange;
        startRange = startRange - 16;
        $("#yearBetween").text('');
        // finding the current div
        var container = event.currentTarget.nextElementSibling.parentElement.nextElementSibling.nextElementSibling;
        // find the values between the years from the textbox in year picker.
        createButtons(container);
        //bind the click function for the dynamically created buttons.
        bindButtons();
        var rangeValues = startRange+ " - "+(endRange-1) ;
        $("#yearBetween").val(rangeValues);
    });

    // given the next sixteen years from the current end year.
    $(".btnNext").click(function(){
        startRange = endRange;
        endRange = endRange + 16;
        //clearing the cuurent values of the picker 
        $("#yearBetween").text('');
        // finding the current div
        var container = event.currentTarget.parentElement.nextElementSibling.nextElementSibling;
        createButtons(container);
        //bind the click function for the dynamically created buttons.
        bindButtons();
        // find the values between the years from the textbox in year picker.
        var rangeValues = startRange+ " - "+(endRange-1) ;
        // writes the value in textbox shows above the button div.
        $("#yearBetween").val(rangeValues);
    });

    $("#txtYear1,#yearImage").click(function(){
        debugger;
        $("#divYear1").toggle();
        endRange = startRange + 16;
        //clearing the cuurent values of the picker 
        $("#yearBetween").text('');
        var container = "#yearContainer";
        // Creating the button for the years in yearpicker.
        createButtons(container);
        //bind the click function for the dynamically created buttons.
        bindButtons();
        // find the values between the years from the textbox in year picker.
        var rangeValues = startRange+ " - "+(endRange-1) ;
        // writes the value in textbox shows above the button div.
        $("#yearBetween").val(rangeValues); 
    });

    // binding the button for the each dynamically created buttons.
    function bindButtons(){
        $(".button").bind('click', function(evt)
        {
            debugger;
            $(this).css("background","#ccc");
            $("#txtYear1").val($(this).val());
            $('#divYear1').hide();
        });
    }

    // created the button for the each dynamically created buttons.
    function createButtons(container){
        var count=0;
        $(container).empty();
        for(var i= startRange; i< endRange; i++)
        {
            var btn = "<input type='button' style='margin:3px;' class='button btn btn-default' value=" + i + "></input>";
            count = count + 1;
            $(container).append(btn);
            if(count==4)
            {
                $(container).append("<br/>");
                count = 0;
            }
        }
    }

    $("#yearBetween").focusout(function(){  
        var yearValue = $("#yearBetween").val().split("-");
        startRange = parseInt(yearValue[0].trim());
        if(startRange>999 && startRange < 9985){
            endRange = startRange + 16;
            $("#yearBetween").text('');
            var container = "#yearContainer";
            createButtons(container);
            bindButtons();
            var rangeValues = startRange+ " - "+(endRange-1) ;
            $("#yearBetween").val(rangeValues);
        }
        else
        {
            $("#yearBetween").focus();
        }
    });

     $("#yearBetween, #txtYear1").keydown(function (e) {
        // Allow: backspace, delete, tab, escape, enter and .
        if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 110, 190]) !== -1 ||
             // Allow: Ctrl+A, Command+A
            (e.keyCode === 65 && (e.ctrlKey === true || e.metaKey === true)) || 
             // Allow: home, end, left, right, down, up
            (e.keyCode >= 35 && e.keyCode <= 40)) {
                 // let it happen, don't do anything
                 return;
        }
        // Ensure that it is a number and stop the keypress
        if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {
            e.preventDefault();
        }
    });
});
$("your-selector").datepicker({
    format: "yyyy",
    viewMode: "years", 
    minViewMode: "years"
});
$('#datepicker').datepicker({
    format: "yyyy",
    weekStart: 1,
    orientation: "bottom",
    language: "{{ app.request.locale }}",
    keyboardNavigation: false,
    viewMode: "years",
    minViewMode: "years"
});
$('#year').datepicker({
    format: "yyyy",
    viewMode: "years",
    minViewMode: "years"
});