我试图弄清楚如何允许不正确的值并自动将其格式化为正确的值。
例如,如果您输入 2013 年 6 月 1 日,则不允许使用此值,因为“j”没有大写。有没有办法可以将值截取为文本(onBlur)并将“j”更改为资本值?
问题是,在检索输入的原始值之前,我遇到了错误。我不确定在什么时候我能够在它遇到错误之前检索该值(因为它无法解析日期)。
谢谢。
我试图弄清楚如何允许不正确的值并自动将其格式化为正确的值。
例如,如果您输入 2013 年 6 月 1 日,则不允许使用此值,因为“j”没有大写。有没有办法可以将值截取为文本(onBlur)并将“j”更改为资本值?
问题是,在检索输入的原始值之前,我遇到了错误。我不确定在什么时候我能够在它遇到错误之前检索该值(因为它无法解析日期)。
谢谢。
如果您希望每次都以相同的格式输入日期,您可以编写一个函数,将您的输入按空格分隔,然后在运行时检查每个部分是否为数字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);
见演示。
为了在日期选择器中选择错误输入的日期,您可能会发现以下有用:
<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>
谢谢大家的回答。我想我对我的问题不太清楚。
一段时间后,我设法弄清楚我在寻找什么。我的解决方案如下:
$("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);
}
});