Jquery ui jquery ui日期选择器从输入字段删除我的文本

Jquery ui jquery ui日期选择器从输入字段删除我的文本,jquery-ui,Jquery Ui,我有一个非常简单的html页面,其中包含以下javascript $(function() { $( "#datepicker" ).datepicker({ changeMonth: true, changeYear: true }); $( "#datepicker" ).datepicker( "option", "dateFormat", "yy-mm-dd" ); }); 然后是输入目标元素 <input

我有一个非常简单的html页面,其中包含以下javascript

$(function() {
    $( "#datepicker" ).datepicker({
        changeMonth: true,
        changeYear: true
    });
    $( "#datepicker" ).datepicker( "option", "dateFormat", "yy-mm-dd" );        
});
然后是输入目标元素

<input id="datepicker" type="text" class="boxtpl" name="${field.name}" value="${release?.startDate}">

我看到查看源代码输入的html是有效的

<input id="datepicker" type="text" class="boxtpl" name="release.startDate" value="2012-02-07">

因此,当我执行GET请求以获取此页面时,只有在删除javascript中设置格式的最后一行时,我的日期才会呈现,这非常重要,因为这是我为playframework配置的格式!!!!!如果我没有设置格式,帖子就会中断,因为格式不匹配:(

为什么设置日期选择器的格式会清除我的日期

我可以尝试编写更多脚本来手动设置它,尽管我尝试调用api来设置它,但这不起作用,因此在执行原始javascript设置时可能也不起作用…还不确定。有人知道为什么会发生这种情况,或者更好的是,知道如何修复它吗

谢谢, 院长

你所说的:

由于格式不匹配,帖子会中断

另外,我不太明白你的GET和POST请求是什么意思?你是指表单方法吗?在这种情况下,你应该用周围的表单标记修改HTML代码,并添加一个提交按钮,这样我们就可以准确地理解你想要什么,并尝试重现问题

无论如何,看看这是否是您想要的:

实际上,我只是在CSS之外加入了jQueryUI库,以便对代码进行全面测试

此外,我不明白这些属性的用途
name=“${field.name}”value=“${release?.startDate}”
,你能澄清一下吗

最后,到底是什么不适合你

编辑:

因此,根据我上次关于默认日期显示的评论,请检查一下,看看它是否符合您的需要


Happy JS fiddling;)

不确定这是否是jquery ui中的错误,但设置格式似乎有效地删除了默认值。你可以用链子把它固定住

.datepicker("setDate", datepicker_default_val );
然而,我在我的web应用程序中所做的是定义一个CSS类“.datepicker”,然后编写这个代码片段,为任何使用该类的人提供日期选择器

 $( ".datepicker" ).each( function(index){
          var datepicker_default_val = $(this).val();
          $( this ).datepicker({numberOfMonths: 3, showButtonPanel: true});
          $( this ).datepicker( "option", "dateFormat", 'yy-mm-dd' );
          $( this ).datepicker("setDate", datepicker_default_val );
      });
这样做的目的是获取带有标记类的每个元素,将默认值保存到本地var datepicker_default_val,设置格式,然后恢复该值


一点小技巧,但是把它放在$(document.ready(function(){})中;如果jQuery无法解析输入值,它确实会从输入字段中删除该值(如果设置了altField,甚至从altField中删除)


例如,在使用不同的地区时可能会发生这种情况。如果您将datepicker dateFormat设置为'dd-MM-yy'并使用法语本地化,它将解析“10 Mars 2012”,但是将删除“10 Mars 2012”的值。

如果输入字段与默认日期格式不匹配,它将简单地将其删除。 第二行中的选项设置太晚,在第一行之后,它已被删除

解决方案:在第一次调用中设置日期格式:

$( "#datepicker" ).datepicker({
    changeMonth: true,
    changeYear: true,
    dateFormat: "yy-mm-dd"
});

在我的例子中,我发现JQuery被一个“formoid”解决方案引入,所以,我只是替换了重新注入数据的函数,添加了行

“值”:日期属性(“值”)

我对答案也有不同的看法:

jQuery(".formoid-flat-blue").find('input[type=date]').each(function(){
    var date = $(this);
    var datepicker_default_val = $(this).val();
    var text = $('<input type="text">');
    text.get(0).className = date.get(0).className;
    text.attr({
        "name": date.attr("name"),
        "placeholder": date.attr("placeholder"),
        "required": date.attr("required"),
        "value": date.attr("value")
    });
    date.replaceWith(text);
    text.datepicker({
        format:  _dateFormat || date.attr("data-format") || 'yyyy-mm-dd'
    });
    if (datepicker_default_val) {
        text.datepicker({
            setDate:  datepicker_default_val
        });
    }
});
jQuery(“.formoid浅蓝色”).find('input[type=date]')。每个(函数(){
var日期=$(此日期);
var datepicker_default_val=$(this.val();
变量文本=$('');
text.get(0).className=date.get(0).className;
text.attr({
“名称”:date.attr(“名称”),
“占位符”:date.attr(“占位符”),
“必需”:日期属性(“必需”),
“值”:日期属性(“值”)
});
日期。替换为(文本);
text.datepicker({
格式:_dateFormat | | date.attr(“数据格式”)| |“yyy-mm-dd”
});
如果(日期选择器\u默认值\u val){
text.datepicker({
setDate:datepicker\u default\u val
});
}
});

将html更改为浏览器收到的内容,正如我所说的那样​ 你展示给我的那个很棒的工具演示了它(只需删除一行javascript,它就可以再次工作)+就为了你给我看的那个很酷的工具。这个工具太酷了。基本上,这是行不通的,但我想我开始明白你想要什么了!我们讨论的是一个默认日期值,它必须显示在输入字段的开头,对吗?是的,我刚刚解决了它,因为我发现您可以将dateformat传递到构造函数中,这很好。但是,在不删除数据的情况下,无法在后记中更改它:(这似乎很奇怪。此外,您还必须解析date
datepicker\u default\u val=$.datepicker.parseDate($yy-mm-dd',$(this.val())
)。