【问题标题】:Set startDate and endDate of Bootstrap datepicker dynamically based on selected value根据所选值动态设置 Bootstrap datepicker 的 startDate 和 endDate
【发布时间】:2017-02-22 03:44:28
【问题描述】:

我想根据选项表单中选择的值动态设置 Bootstrap 日期选择器的 startDate 和 endDate。

因此,如果我在选项中选择 Boby,那么日期选择器将设置 startDate = 2016-10-04 和 endDate = 2016-10-14。

数组:

 <?php
    $data = array ( 
        [0] => Array ( [id] => 2 [name] => Anton [date_start] => 2016-10-04 [date_end] => 2016-10-14 ) 
        [1] => Array ( [id] => 4 [name] => Boby [date_start] => 2016-10-09 [date_end] => 2016-10-29 ) 
        [2] => Array ( [id] => 5 [name] => Ciara [date_start] => 2016-10-01 [date_end] => 2016-10-31 ) 
        [3] => Array ( [id] => 6 [name] => Don [date_start] => 2016-10-05 [date_end] => 2016-12-31 ) 
        [4] => Array ( [id] => 7 [name] => Ester [date_start] => 2016-10-01 [date_end] => 2016-12-31 ) 
        )
    ?>

选择

<select name="date" id="date">
<?php
foreach ($data as $r) {
echo "<option value='$r['id']'>$r[name]</option>";
}
?>
</select>

输入日期

<label class="col-sm-3 control-label">Start</label>
<input id="date_start" name="date_start" type="text" class="form-control>
<label class="col-sm-3 control-label">End</label>
<input id="date_end" name="date_end" type="text" class="form-control">

有人有解决这个问题的想法吗?

更新======================================== =========================

我尝试过使用 jQuery,但没有成功。这是我的 JS 代码

$(document).ready(function () {
        $('#date').change(function () {
            var start;
            var end;
            var selected = $(this).find("option:selected").val();

<?php
$js_array = json_encode($data);
echo "var data = " . $js_array . ";\n";
?>

            for (var i = 0, len = data.length; i < len; i++) {
                if (data[i]['id'] === selected) {
                    start = data[i]['date_start'];
                    end = data[i]['date_end'];
                }
            }

            $('input').datepicker({
                startDate: start,
                endDate: end,
                dateFormat: "yyyy-mm-dd"
            });
        });
    });

【问题讨论】:

  • foreach ($siklus_audit as $r) $siklus_audit 是什么?它来自哪里..?但我猜你的选择选项工作正常,所以你可以用 jQuery 很简单地做到这一点。 api.jquery.com/val
  • 我的错,我的意思是 foreach ($data as $r)。我已经尝试过,但我没有设法将 date_start 和 date_end 的值用于 datepicker 属性。
  • @Twinfriends 用我的 js 代码更新

标签: javascript php jquery twitter-bootstrap datepicker


【解决方案1】:

只需将等号改为= =,并添加val函数将日期与选择器更改为这样:

$(document).ready(function () {
    $('#date').change(function () {
        var start;
        var end;
        var selected = $(this).find("option:selected").val();

        //your php code

        for (var i = 0, len = data.length; i < len; i++) {

            if (data[i]['id'] == selected) {
                start = data[i]['date_start'];
                end = data[i]['date_end'];
            }
        }

        $("#date_start").val(start);
        $("#date_end").val(end);
        $('input').datepicker({
            dateFormat: "yy-mm-dd"
        });
    });
});

【讨论】:

    【解决方案2】:

    修改你的每个循环输出如下

    <select name="date" id="date">
        <option value="{'startDate':'2016-10-04','endDate':'2016-10-14'}">Anton</option>
        <option value="{'startDate':'2016-10-09','endDate':'2016-10-29'}">Boby</option>
    </select>
    

    之后,您可以使用 javascript 轻松获取选择日期。

    【讨论】:

    • 顺便说一句,我还需要'id'来提交表单
    • 将 id 也添加到 json 对象中。 我很着急希望有人可以帮助你。尝试从 html 选择值中搜索解析 json 对象
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-16
    • 1970-01-01
    • 2017-03-02
    • 1970-01-01
    相关资源
    最近更新 更多