在bootstrap-datepicker上,获取datepicker值的按钮单击事件是旧的

时间:2014-01-06 06:43:26

标签: javascript twitter-bootstrap

我使用了bootstrap-datepicker组件。当我更改其他人时,请更改' day'再次,但我得到datepicker值旧(按钮点击事件选择'其他' datepicker值)。

我的代码:

    $('#date').change(function (e) {

        switch (this.value) {
            case 'day':
                $("#dpform").val(showdate(-1));
                $("#dpdend").val(showdate(0));
                $('#dpform').attr("disabled", "disabled");
                $('#dpdend').attr("disabled", "disabled");
                break;
            case 'week':
                $("#dpform").val(showdate(-7));
                $("#dpdend").val(showdate(0));
                $('#dpform').attr("disabled", "disabled");
                $('#dpdend').attr("disabled", "disabled");
                break;
            case 'month':
                $("#dpform").val(showdate(-30));
                $("#dpdend").val(showdate(0));
                $('#dpform').attr("disabled", "disabled");
                $('#dpdend').attr("disabled", "disabled");
                break;
            case 'other':
                $("#dpform").val(showdate(0, 'other'));
                $("#dpdend").val(showdate(0, 'other'));
                $('#dpform').removeAttr("disabled");
                $('#dpdend').removeAttr("disabled");
                break;
        }
   })

// showdate方法

function showdate(n, string) {
    var uom = new Date();
    uom.setDate(uom.getDate() + n);

    if (string == "other")
        uom = uom.getFullYear() + "-" + (uom.getMonth() + 1) + "-" + uom.getDate();
    else {
        uom = uom.getFullYear() + "-" + (uom.getMonth() + 1) + "-" + uom.getDate() + " " + uom.getHours() + ":" + uom.getMinutes() + ":" + uom.getSeconds();
}

    return uom.replace(/\b(\w)\b/g, '0$1');
}

//按钮点击事件

$('.btndataquery').click(function () {
    var a = $("#dpform").val();  //a,b value is old
    var b = $('#dpdend').val();  
    //TO DO ...
});

我的HTML代码:

<select id="date" name="date" class="span2">
    <option value="day" class="btn-date">Last one day</option>
    <option value="week" class="btn-date">Last one week</option>
    <option value="other" class="btn-minimize-other">other</option>
</select>
<input type="button" id="btnQuery" value="Query" class="btn btn-success btndataquery" name="assign" />

<div class="other-search" style="display: none;">
    <div class="control-group">
        <label class="control-label">
        <b>time form:</b></label>
        <div class="controls">
            <input type="text" id="dpform" class="width100" />
            <b>to</b>
            <input type="text" id="dpdend" class="width100" />
        </div>
     </div>
</div>

2 个答案:

答案 0 :(得分:1)

按钮点击或其他一些事件,如果你想改变令人兴奋的日期选择器值的任何事情,那么尝试下面的snipcode

/ * HTML部分* /

/ * Jquery部分* / $(&#39; #datepicker&#39;)。datepicker(&#39;选项&#39;,&#39; minDate&#39;,新日期(startDate));

$(&#39; #datepicker&#39;)。datepicker(&#39;选项&#39;,&#39; maxDate&#39;,新日期(endDate));

$(&#39; #datepicker&#39;)。datepicker(&#39;选项&#39;,&#39; defaultDate&#39;,新日期(startDate));

答案 1 :(得分:0)

我不确定你的意思。但如果我理解你,这里有一个技巧。

$('.btndataquery').click(function () {
    setTimeout(function(){
       var a = $("#dpform").val();
       var b = $('#dpdend').val();  
       //TO DO ...    
    }, 50);  //Delay 100 milliseconds, so values aren't old
});

我们正在添加延迟,因此值不老。

请谨慎使用,

干杯