我想弄清楚如何允许一个不正确的值,并自动格式化为正确的值。jquery datepicker拦截格式错误
例如,如果您输入2013年6月1日,则此值将不被允许,因为'j'未被大写。有没有一种方法可以截取文本(onBlur)的值并将“j”更改为资本值?
问题是,我收到一个错误,然后才能检索输入的原始值。我不确定在哪一点我能够检索该值之前,它遇到一个错误(从它不能解析日期)。
谢谢。
我想弄清楚如何允许一个不正确的值,并自动格式化为正确的值。jquery datepicker拦截格式错误
例如,如果您输入2013年6月1日,则此值将不被允许,因为'j'未被大写。有没有一种方法可以截取文本(onBlur)的值并将“j”更改为资本值?
问题是,我收到一个错误,然后才能检索输入的原始值。我不确定在哪一点我能够检索该值之前,它遇到一个错误(从它不能解析日期)。
谢谢。
谢谢大家对你的答案。我想我的问题并不太清楚。
过了一段时间,我设法弄清楚我在找什么。我的解决方案如下:
$("input.datepicker").datepicker({
...
})
.blur(function() {
var patt = new RegExp("[A-Z]");
var patt2 = new RegExp("[a-z]")
var text = $("input.datepicker").val();
if(!text.match(patt)) {
var pos = text.search(patt2);
var char = text.charAt(pos).toUpperCase();
var correctedDate = text.replace(patt2, char);
$("input.datepicker").val(correctedDate);
}
});
如果您希望每次都以相同的格式输入日期,您可以编写一个函数,以空格分隔您的输入,然后在运行时检查每个部分是否为数字parseInt()
如果不是的话,那就把它大写。
function formatDate(date) {
var dateElements = date.split(" ");
var formattedDate = "";
for (var i=0; i < dateElements.length; i++) {
var dateElement = dateElements[i];
if (isNaN(parseInt(dateElement))) {
dateElement = dateElement.charAt(0).toUpperCase() + dateElement.slice(1);
}
formattedDate += dateElement + " ";
}
return formattedDate.trim();
}
var formattedDate = formatDate("1 jun 2013");
alert(formattedDate);
请参阅DEMO。
为了得到错误地输入日期在日期选择器中选择,你会发现下面的有用:
<body>
<form>
<input type="text" name="date" id="date"/>
</form>
<script>
$("#date").datepicker({constrainInput:false,dateFormat:"d M yy",onClose:function(picker,str) { $("#date").datepicker("setDate","yourdate in correct format"); } });
</script>
</body>
</html>
获得该值。只有在使用日历选择日期时,这似乎才有效。在我的情况下,用户键入不正确的日期。 – rcheuk 2013-02-20 02:10:20
当对文本字段进行对焦时,会显示日历。无论jquery-ui-1.10.1是什么,关于close的文本字段的onblur都会被调用 – user993553 2013-02-20 02:23:49
在这种情况下,我不认为我可以检索日期对象,因为当它试图检索日期时,由于'j'它会引发错误。 – rcheuk 2013-02-20 02:59:10
您应该可以通过'$(“。datepicker”)。val();' – zakangelle 2013-02-20 17:11:49