Вы также можете использовать это: https://github.com/pankleks/TypeScriptBuilder
Эта небольшая библиотека генерирует определение типа TypeScript на основе типов C #. Используйте его непосредственно в своем проекте C # для создания кода для вашего проекта TypeScript с интерфейсом. Вы также можете использовать небольшое консольное приложение для генерации кода с помощью инструментов предварительной сборки.
Работает на Full & amp; NET Core Framework!
Установить по nuget: Install-Package TypeScriptBuilder
any
для типов, которые не могут быть преобразованы Подробное описание : https://github.com/pankleks/TypeScriptBuilder/blob/master/README.md
Вам не нужно хранить 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" />
- ИЗМЕНИТЬ, чтобы исправить 5 подчеркиваний для 4-символьного уродства -
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>
Я думаю, что это может быть отправной точкой ... надеюсь, что это поможет ...
Вы можете использовать приведенную ниже директиву, если используете AngularJS
. В вашем HTML добавить
<div otp-input-directive options="otpInput"></div>
. В вашем контроллере добавьте
$scope.otpInput={
size:6,
type:"text",
onDone: function(value){
console.log(value);
},
onChange: function(value){
console.log(value);
}
};
Я бы просто использовал этот 4 отдельных поля и добавил один и тот же обработчик событий для всех из них:
Вы даже можете написать немного отдельного JS для этого и повторно использовать его.
Я не знаю, как разбить вход в html5, возможно, в css вы можете использовать тот же класс для управления своим вводом, и вы можете вводить стиль, например:
div{
text-align:center;
background:#eee;
}
input{
border: 0;
outline: 0;
background: transparent;
border-bottom: 2px solid black;
width: 100px;
text-align:center;
padding : 5px;
margin-left:10px;
}
button{
margin-top:20px !important;
margin: 0 auto;
color: white;
border-radius: 4px;
text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2);
}
<div>
<input class="form-control" placeholder="0" maxlength="1" />
<input class="form-control" placeholder="0" maxlength="1" />
<input class="form-control" placeholder="0" maxlength="1" />
<input class="form-control" placeholder="0" maxlength="1" />
<br><button type="button" onclick="myFunction()">Submit</button>
<p id="optRes"></p>
</div>
Определить myFunction () и вы можете получить свой массив по вашему классу: form-control, конвертировать в строку, затем в int, если вам нужно его проверить. Помогает?