当前位置: 首页 > 面试题库 >

如何对输入字段进行分区,使其在屏幕上显示为单独的输入字段?

臧威
2023-03-14
问题内容

我要设计图片中的内容,用户要输入一个四位数的一次性密码(OTP)。现在,我已经通过4个单独的输入,然后在javascript中组合值来实现了这一点:

<input type="text" class="form-control" placeholder="0" maxlength="1"  />
<input type="text" class="form-control" placeholder="0" maxlength="1" />
<input type="text" class="form-control" placeholder="0" maxlength="1" />
<input type="text" class="form-control" placeholder="0" maxlength="1" />

我不确定这是否正确。我认为必须有一些样式选项,一个输入文本框将像在图像中一样显示为分区的一个。是否可以使用引导程序?如何设置一个输入控件显示为输入分区的样式?


问题答案:

您不必保留4个单独的字段;

首先,您应该调整字符间距,然后调整底部的边框样式…

#partitioned {

  padding-left: 15px;

  letter-spacing: 42px;

  border: 0;

  background-image: linear-gradient(to left, black 70%, rgba(255, 255, 255, 0) 0%);

  background-position: bottom;

  background-size: 50px 1px;

  background-repeat: repeat-x;

  background-position-x: 35px;

  width: 220px;

}


<input id="partitioned" type="text" maxlength="4" />

编辑以修复4个字符丑陋的5个下划线-

var obj = document.getElementById('partitioned');

obj.addEventListener('keydown', stopCarret);

obj.addEventListener('keyup', stopCarret);



function stopCarret() {

    if (obj.value.length > 3){

        setCaretPosition(obj, 3);

    }

}



function setCaretPosition(elem, caretPos) {

    if(elem != null) {

        if(elem.createTextRange) {

            var range = elem.createTextRange();

            range.move('character', caretPos);

            range.select();

        }

        else {

            if(elem.selectionStart) {

                elem.focus();

                elem.setSelectionRange(caretPos, caretPos);

            }

            else

                elem.focus();

        }

    }

}


#partitioned {

  padding-left: 15px;

  letter-spacing: 42px;

  border: 0;

  background-image: linear-gradient(to left, black 70%, rgba(255, 255, 255, 0) 0%);

  background-position: bottom;

  background-size: 50px 1px;

  background-repeat: repeat-x;

  background-position-x: 35px;

  width: 220px;

  min-width: 220px;

}



#divInner{

  left: 0;

  position: sticky;

}



#divOuter{

  width: 190px;

  overflow: hidden;

}


<div id="divOuter">

    <div id="divInner">

        <input id="partitioned" type="text" maxlength="4" />

    </div>

</div>

我认为这可以作为起点…希望这会有所帮助…



 类似资料:
  • 问题内容: 这是我的代码,无法正常工作。HTML,JavaScript,PHP或CSS是否有其他方法来设置最小宽度? 我希望文本输入字段的宽度可以动态变化,以便输入字段可以围绕其内容流动。每个输入都有的内置填充,这是问题,第二个问题是根本无法处理输入。 如果我设置的宽度超出了整个程序的混乱,那么我需要的宽度是1px,仅在需要时才需要。 问题答案: 听起来您的期望是,根据文本框的内容将样式动态地应用

  • 问题内容: 所以我需要屏蔽一个SSN#输入字段,假设ssn是,我需要显示(他们输入每个数字时都是实时的),但是我仍然需要保留原始值以提交。 如果用户严格输入值,我可以做到这一点,但是如果用户执行其他任何操作(如删除或将光标移动到随机位置并添加/删除数字,复制粘贴/删除等),它就会中断如果可能的话,我真的不想听一堆事件来完成这项工作。 我还尝试过在输入字段的顶部放置一个div来显示被屏蔽的ssn,而

  • 我有疑问,请告诉我如何进行。下面的图片,你可以看到有两个领域称为销售价格和购买价格,我想在那里只输入这些领域的十进制值请告诉我如何做到这一点 在此处输入图像描述 谢谢你

  • 问题内容: 有什么办法可以在输入字段中显示ajax响应?谢谢 问题答案: 是。 使用jQuery,它看起来像:

  • 我有一个表单输入字段,如果用户尝试在空时提交,则显示错误,但我也想显示不同的错误消息,即输入不是唯一的,我目前有这个 这是MUI v4

  • 问题内容: 我试图在下面的字段中限制输入为数字 它不适用于 它适用于以下代码,但同时更改了两个字段 需要更改用户正在输入的输入字段的值,而不是两者都更改 问题答案: 使用此处找到的指令:而不是ng-change函数。复制此处以方便参考: