2013-02-20 75 views
0

我想弄清楚如何允许一个不正确的值,并自动格式化为正确的值。jquery datepicker拦截格式错误

例如,如果您输入2013年6月1日,则此值将不被允许,因为'j'未被大写。有没有一种方法可以截取文本(onBlur)的值并将“j”更改为资本值?

问题是,我收到一个错误,然后才能检索输入的原始值。我不确定在哪一点我能够检索该值之前,它遇到一个错误(从它不能解析日期)。

谢谢。

回答

0

谢谢大家对你的答案。我想我的问题并不太清楚。

过了一段时间,我设法弄清楚我在找什么。我的解决方案如下:

$("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); 
} 
}); 
1

如果您希望每次都以相同的格式输入日期,您可以编写一个函数,以空格分隔您的输入,然后在运行时检查每个部分是否为数字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

+0

在这种情况下,我不认为我可以检索日期对象,因为当它试图检索日期时,由于'j'它会引发错误。 – rcheuk 2013-02-20 02:59:10

+0

您应该可以通过'$(“。datepicker”)。val();' – zakangelle 2013-02-20 17:11:49

0

为了得到错误地输入日期在日期选择器中选择,你会发现下面的有用:

<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> 
+0

获得该值。只有在使用日历选择日期时,这似乎才有效。在我的情况下,用户键入不正确的日期。 – rcheuk 2013-02-20 02:10:20

+0

当对文本字段进行对焦时,会显示日历。无论jquery-ui-1.10.1是什么,关于close的文本字段的onblur都会被调用 – user993553 2013-02-20 02:23:49