LayDate改变日期,无法在done()的调用方法中通过jq获取最新日期值

	
	<input type="text" class="layui-input" id="date" placeholder="请选择日期">
	
	
	/**
     * 日期控件:数据概况
     */
    laydate.render({
    
    
        elem: '#date',
        type: 'date',
        range: true,
        done: function (val) {
    
    
            refreshData();
        }
    });
    

如上面代码块所示,切换日期refreshData()中,无法通过$(’#date’).val()获取修改后的日期。这边在网上看到了一篇类似的文章,是关于input产生这种现象。

原理和咱们这个应该一样,无法获取最新值原因有可能是LayDate控件给value赋值,只是改变了内存的值,没有自动触发oninput和onchange事件,所以无法获取最新的值。

要触发上述事件,则需手动触发一下,如下所示:

	
	/**
     * 日期控件:数据概况
     */
    laydate.render({
    
    
        elem: '#date',
        type: 'date',
        range: true,
        done: function (val) {
    
    
            $('#date').val(val);
            
            refreshData();
        }
    });
    

除了上面重新赋值,还有两种方法:

  • 直接把val当成参数传给refreshData();
  • 设置一个定时器,时间可以设置10,这样也可以拿到日期
	
	/**
     * 日期控件:数据概况
     */
    laydate.render({
    
    
        elem: '#date',
        type: 'date',
        range: true,
        done: function (val) {
    
    
            refreshData(val);
        }
    });
    
	/**
     * 日期控件:数据概况
     */
    laydate.render({
    
    
        elem: '#date',
        type: 'date',
        range: true,
        done: function (val) {
    
    
            setTimeout(function () {
    
    
				refreshData();
			}, 10);
        }
    });
    

おすすめ

転載: blog.csdn.net/qq_37604998/article/details/118365509