javascript - 如何自动格式化文本框输入

标签 javascript jquery html jsp servlets

<tr>
   <td><label>Birthdate</label>
      <input type="text" placeholder="mm/dd/yyyy" name="birthdate" maxlength="10"/>
   </td>
</tr>

好吧,我的代码可以正常工作,但我希望我的“输入类型文本”自动格式化为日期 (html 5 input type=date),因为在我的 Servlet 中我将它转换为 Age。 问题是,如果我使用“input type=date”转换是错误的,所以我决定使用“input type=text”并且它正在工作。那么是否可以将“/”自动放入这种格式“mm/dd/yyyy”?例如,如果用户输入 2 个字符,“/”将自动输入等。


从生日到年龄的 Servlet

        String birthdate = request.getParameter("birthdate");


        int monthDOB = Integer.parseInt(birthdate.substring(0, 2));
        int dayDOB = Integer.parseInt(birthdate.substring(3, 5));
        int yearDOB = Integer.parseInt(birthdate.substring(6, 10));

        DateFormat dateFormat = new SimpleDateFormat("MM");
        java.util.Date date = new java.util.Date();
        int thisMonth = Integer.parseInt(dateFormat.format(date));

        dateFormat = new SimpleDateFormat("dd");
        date = new java.util.Date();
        int thisDay = Integer.parseInt(dateFormat.format(date));

        dateFormat = new SimpleDateFormat("YYYY");
        date = new java.util.Date();
        int thisYear = Integer.parseInt(dateFormat.format(date));

        int calAge = thisYear - yearDOB;

        if (thisMonth < monthDOB) {
            calAge = calAge - 1; 
        }

        if (thisMonth == monthDOB && thisDay < dayDOB) {
            calAge = calAge - 1;
        }

        String age = Integer.toString(calAge);

在表单中更新

<tr>
    <td><label for="inputName">Birthdate</label>
       <input type="text" placeholder="mm/dd/yyyy" id="input_date" name="birthdate" maxlength="10"  />
    </td>
</tr>

源码更新

<script src="../scripts/formatter.js"></script>
<script src="../scripts/formatter.min.js"></script>
<script src="../scripts/jquery.formatter.js"></script>
<script src="../scripts/jquery.formatter.min.js"></script>

添加脚本

<script>
     $('#input_date').formatter({
       'pattern': '{{99}}/{{99}}/{{9999}}',
       'persistent': true
     });
</script>

我也试过 javascript 但它不工作......

最佳答案

我一直在 GitHub 上关注一个名为 formatter.js http://firstopinion.github.io/formatter.js/demos.html 的格式化项目(并提供反馈以改进它)。这可能正是您正在寻找的东西。

这不会阻止您输入像 5 月 53 日这样的日期……但它会帮助您格式化。

new Formatter(document.getElementById('date-input'), {
  'pattern': '{{99}}/{{99}}/{{9999}}',
  'persistent': true
});

$('#date-input').formatter({
  'pattern': '{{99}}/{{99}}/{{9999}}',
  'persistent': true
});

关于javascript - 如何自动格式化文本框输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19709559/

相关文章:

jquery - 自定义进度条

javascript - 图像调整大小以适应浏览器而不裁剪或丢失纵横比

javascript - 将鼠标悬停在无序列表项上会导致其他 div 元素出现不需要的动画

javascript - lightbox.js html5 视频不播放视频。我做错了什么?

javascript - 如何在嵌套数组中使用reducer

javascript - .NET MVC 5 Ajax 调用无法在发布后显示 javascript 消息

javascript - Extjs4 树面板的文件夹对齐问题

javascript - 使用 token 在后端和前端识别用户进行身份验证

javascript - 有没有办法在一次调用中修改每个 jquery 对象的特定属性?

PHP/JQUERY - 为列数据创建超链接