0

我试图弄清楚如何允许不正确的值并自动将其格式化为正确的值。

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

问题是,在检索输入的原始值之前,我遇到了错误。我不确定在什么时候我能够在它遇到错误之前检索该值(因为它无法解析日期)。

谢谢。

4

3 回答 3

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);

演示

于 2013-02-20T00:38:55.567 回答
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>
于 2013-02-20T00:49:30.500 回答
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);
}
});
于 2013-02-20T15:53:21.910 回答