首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >允许用户连续填写多个表单域

允许用户连续填写多个表单域
EN

Stack Overflow用户
提问于 2016-08-11 05:10:25
回答 3查看 108关注 0票数 0

我在我的表单中有以下字段,用户应该在其中输入10位数字。

我在3个单独的字段中表示数字(3-3-4):

Phone: [_ _ _]-[_ _ _]-[_ _ _ _]

代码:

代码语言:javascript
复制
     <div id="phone-element" class="form-element">
       <input type="tel" size="3" name="phone1" id="phone1" maxlength="3" tabindex="3" pattern="[0-9]{3}" title="3 digit phone number. Eg.808" required=""> <span class="wc_sep">-</span>
       <input type="tel" size="3" name="phone2" id="phone2" maxlength="3" tabindex="4" pattern="[0-9]{3}" title="3 digit phone number. Eg.789" required=""> <span class="wc_sep">-</span>
        <input type="tel" size="4" name="phone3" id="phone3" tabindex="5" pattern="[0-9]{4}" maxlength="4" title="4 digit phone number. Eg.1374" required="">
      </div>

但目前在每个字段之间,用户需要将鼠标放在下一个字段中,以便继续键入数字。

我怎么才能不断地做下去呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-08-11 05:20:40

这可以通过检查输入值的length (在键控时)与您在输入上设置的maxlength来使用jQuery来完成。如果输入值的length与输入的maxlength匹配,则focus下一个输入:

代码语言:javascript
复制
$(function() {
  $('input[type="tel"]').keyup(function () {
    if (this.value.length === this.maxLength) {
      $(this).nextAll('input[type="tel"]').first().focus();
    }
  });
});
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="phone-element" class="form-element">
    <input type="tel" size="3" name="phone1" id="phone1" maxlength="3" tabindex="3" pattern="[0-9]{3}" title="3 digit phone number. Eg.808" required="">
    <span class="wc_sep">-</span>
    <input type="tel" size="3" name="phone2" id="phone2" maxlength="3" tabindex="4" pattern="[0-9]{3}" title="3 digit phone number. Eg.789" required="">
    <span class="wc_sep">-</span>
    <input type="tel" size="4" name="phone3" id="phone3" tabindex="5" pattern="[0-9]{4}" maxlength="4" title="4 digit phone number. Eg.1374" required="">
</div>

票数 1
EN

Stack Overflow用户

发布于 2016-08-11 05:13:21

您需要使用JavaScript。

将事件侦听器附加到keyup上的输入元素。如果字段的长度与您的预定长度匹配,则将焦点添加到下一个输入元素。

例如:

代码语言:javascript
复制
var phone1 = document.getElementById('phone1');
phone1.addEventListener('keyup', function() {
    if (phone1.value.length === 3) {
       document.getElementById('phone2').focus();
    }
});

您可能需要迎合您发现的任何边缘情况,以确保UX是平滑的,但这应该可以让您开始。

票数 0
EN

Stack Overflow用户

发布于 2016-08-11 05:36:45

您可以使用jquery

代码语言:javascript
复制
<html>
  <head>
    <title></title>
    <meta content="">
    <style></style>
    <script type="text/javascript" src="jquery.js"></script>
  </head>
  <body>
    <input type="text" name="" id="field1">
    <input type="text" name="" id="field2">
    <input type="text" name="" id="field3">

    <script type="text/javascript">
      $(function(){
        var field1 = $("#field1");
        var field2 = $("#field2");
        var field3 = $("#field3");
        field1.on("keyup", function(e){
            if(field1.val().length == 3)
            {
                field2.focus();
            }
        })

        field2.on("keyup", function(e){
            if(field2.val().length == 3)
            {
                field3.focus();
            }
        })
      })
    </script>
  </body>
</html>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38883603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档