【问题标题】:Get data from Datepicker and send it to URL从 Datepicker 获取数据并将其发送到 URL
【发布时间】:2017-01-20 09:27:31
【问题描述】:

我的网站上有两个日期选择器,我想知道如何在用户单击“提交”后获取所选日期,并将用户发送到其中包含日期选择器数据的页面,如下所示:

www.url.com/start=2017-01-28&end=2017-01-29

所以简而言之,我需要获取数据并将其放在url中的“=”之后,然后自动将用户发送到这个url。

请问我该怎么做?

【问题讨论】:

  • datepicker 库应该公开您可以挂钩的事件。您需要将代码添加到在进行选择时调用的事件,该事件将选定的日期值附加到 URL,然后调用 window.location.assign()。您正在使用哪个日期选择器库?另请注意,我猜您的示例 URL 中的 / 应该是 ?

标签: jquery css datepicker


【解决方案1】:

我创建了一个名为handleFilterEvent 的方法,每次您更改日期时,它都会使用开始日期和结束日期参数访问该方法。然后它会创建一个包含开始日期和结束日期的 URL,最后它会重定向到新的 URL。

             $(document).ready(function(){
                $('.daterange-btn').daterangepicker(
                    {
                        ranges   : {
                            'Today'       : [moment(), moment()],
                            'Yesterday'   : [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
                            'Last 7 Days' : [moment().subtract(6, 'days'), moment()],
                            'Last 30 Days': [moment().subtract(29, 'days'), moment()],
                            'This Month'  : [moment().startOf('month'), moment().endOf('month')],
                            'Last Month'  : [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]
                        },
                        startDate: moment().subtract(29, 'days'),
                        endDate  : moment(),
                    },
                    function (start, end) {
                        $('.daterange-btn').find('span').html(start.format('MMMM D, YYYY') + ' - ' + end.format('MMMM D, YYYY'))
                        handleFilterEvent(start,end);
                    }
                )
                function handleFilterEvent(startDate = null,endDate = null){
                    var url = "https://www.google.com"+'?';
                    var startDate = startDate ? startDate.format('YYYY-MM-DD') : '';
                    var endDate = endDate ? endDate.format('YYYY-MM-DD') : '';
                    var params = {};
                    if(startDate && endDate){
                        params.start_date =  startDate;
                        params.end_date =  endDate;
                    }
                    url+= jQuery.param( params );
                    location.href = url;
                }
            });

【讨论】:

    【解决方案2】:

    您可以使用 datepicker onSelect 事件 jsfiddle.net/bharatsing/Lhpnctgv/2/

    尝试此代码
    <label>Start</label>
    <input type="text" id="btnStart" class="jsDate" />
    <br/>
    <label>End</label>
    <input type="text" id="btnEnd" class="jsDate" />
    
    
    $(".jsDate").datepicker({
        onSelect: function(dateText, inst) {    
            var date = $(this).val();
    
            if($("#btnStart").val()!="" && $("#btnEnd").val()!=""){
                var url='www.url.com/start='+$("#btnStart").val()+'&end='+$("#btnEnd").val();
                alert(url);
            }
        }
    });
    

    【讨论】:

    • 好吧,我会试试这个,但首先我试图自定义日期选择器选项以更改语言,例如。试过这个但它不起作用: $( function() { $.datepicker.regional[ "fr" ]; $( ".datepicker" ).datepicker(); } );
    • 好吧似乎运作良好,但我如何在这里替换日期:var url=('www.url.com/start=2017-01-28&end=2017-01-29';) 由btstart 和 btnend 的值 ? (对不起,我是初学者)
    • 你可以像var url='www.url.com/start='+$("#btnStart").val()+'&amp;end='+$("#btnEnd").val();这样的答案一样替换它
    • 哦,不似乎不起作用:/我是否需要用你的 js 替换我的基本 "$( function() { $( ".jsdate" ).datepicker();} )"代码还是放在它后面?编辑:因为我替换了它并且日期选择器不再启动
    • 效果很好,谢谢!你能帮我解决我的“区域”选项问题吗?不明白代码放在哪里 $( function() { $.datepicker.regional[ "fr" ]; $( ".datepicker" ).datepicker(); } );
    【解决方案3】:

    所以这是我尝试过的,但点击似乎并没有启动警报:

     $(function(){
    
     $('.jsdate').datepicker({
        dateFormat: 'yy-dd-mm',//2017-01-29
        altField: '#thealtdate',
    
    });
    
    });
    $('.button1').click( function(e){
    e.preventDefault();
    var url = 
    "https://www.url.com/etc.";
    url += "&startdate="+ $("#id-start").val() + 
    "&enddate=" + $("#id- end").val();
    alert(url);
    })</script>
    <div class="date">
    <p>Arrivée:<a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a>   
    <input type="text" id="id-start" class="jsdate"></p>
    <p></p>
    <p>Départ:&nbsp;&nbsp; <input type="text" id="id-End" class="jsdate"></p>
    <p>
    <input class="button1" type="button" value="Submit" /></p>
    

    还有什么是“altfield : #thealtdate”?

    【讨论】:

    • 这可能听起来很傻,但我是一个新手,所以我不知道这个 document.ready 可能是什么:/ 因为我不使用太多 JS,所以我将它全部直接放在我的 HTML 中的两个
    • 我现在在谷歌上搜索它,如果我需要进一步的帮助,会回来找你编辑:顺便说一句,我应该把它放在一个文档中。准备好了吗?
    • 这是我需要做的: $( document ).ready(('.button1').click( function(e){ e.preventDefault(); var url = "nightsbridge.co.za/bridge/… "; url += "startdate="+ $("#idstart").val() + "&enddate=" + $("#idend").val(); alert(url); }); );
    • 实际上,为了正确回答,我只是将您的代码从狙击手复制/粘贴到我的 HTML 中的
    【解决方案4】:

    你可以这样使用

    https://jsfiddle.net/shantaram/qhob15fw/

    $(function(){
        
        $('.thedate').datepicker({
            dateFormat: 'yy-dd-mm',//2017-01-29
        });
        
    });
    $('#id-submit').click( function(e){
        e.preventDefault();
        var url = "www.url.com/?";//start=2017-01-28&end=2017-01-29
        url += "start="+ $("#id-start").val() + "&end=" + $("#id-end").val();
        alert(url);
    })
    <link href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css" rel="stylesheet"/>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
    
    
    First Date :
    <input id="id-start" class="thedate" type="text" />
    <br />Last Date :
    <input id="id-end" class="thedate" type="text" />
    <br />
    <form>
      <input id="id-submit" type="button" value="Submit" />
    </form>

    【讨论】:

    • 这更像是我需要的,因为我希望通过单击按钮而不是选择来发送它,但单击按钮似乎不会启动警报!我正在发布我所做的答案
    • 你能检查我的答案,看看我的功能有什么问题吗?
    • 你不需要altField: '#thealtdate',这是复制粘贴问题,我的错
    猜你喜欢
    • 2010-12-11
    • 1970-01-01
    • 2020-08-19
    • 2017-08-16
    • 1970-01-01
    • 1970-01-01
    • 2020-09-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多