Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 15.10.2019
Сообщений: 14
1

Ограничение ввода

21.10.2019, 16:43. Показов 1820. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть судоку, часть ячеейк заполнена автоматически (их нельзя изменять) часть нет. Там где не заполнены нам нужно написать число от 1 до 9, при попытке нажать что то еще или букву просто ничего не произойдет. На данный момент я в пустую ячейку судоку могу хоть целый роман написать.
Изначально в ячейках нет инпута:

HTML5
1
2
3
4
5
6
7
            <tr>
                <td id='c0'class="my-td"></td>
                <td id='c1'class="my-td"></td>
                <td id='c2'class="my-td"></td>
 
   ..............
            </tr>
Он открывается для некоторых так:

Javascript
1
2
3
4
5
 let tbl = document.querySelector('table');
    for(let i = 0; i < tbl.rows.length; i++){
        for(let j = 0; j < tbl.rows[i].cells.length; j++){
            if(tbl.rows[i].cells[j].innerText==0){
                tbl.rows[i].cells[j].contentEditable = "true";

Я пробовала ограничить хотя бы длину, просто по принципу:

HTML5
1
2
3
4
5
<tr>
<td id='c0'class="my-td"maxLength='1'></td>
<td id='c1'class="my-td"maxLength='1'></td>
<td id='c2'class="my-td"maxLength='1'></td>
</tr>
но это не работает так как у самого td в принципе нет maxlength.
Другими словами в моем случает лучше ограничить как то через JS, типо:
Javascript
1
tbl.rows[i].cells[j].maxLength='1';
но это тоже почему то не работает... нет других простых способов?

з.ы. желательно без jQuery

Добавлено через 12 минут
p.p.s. есть такой метод:

Javascript
1
document.getElementById("myTextarea").maxLength = "1";
но как я понимаю он работает только если у нас какой то инпут типо поля ввода, в моем случает когда есть только ячейки это не работает и пишет: Cannot read property 'maxLength' of null
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.10.2019, 16:43
Ответы с готовыми решениями:

Как сделать запрет ввода букв в поле для ввода input
Здравствуйте! Есть стандартное поле ввода &lt;input type='text' name='name1' size='30'...

Реализовать контроль ошибок ввода данных в поле, предназначенное для ввода пароля
4.Реализовать в JavaScript контроль ошибок ввода данных в поле, предназначенное для ввода пароля.

Реализовать контроль ошибок ввода данных в поле, предназначенное для ввода времени
5.Реализовать в JavaScript контроль ошибок ввода данных в поле, предназначенное для ввода времени.

Реализовать контроль ошибок ввода данных в поле, предназначенное для ввода номера телефона
1.Реализовать в JavaScript контроль ошибок ввода данных в поле, предназначенное для ввода номера...

1
Эксперт JS
2035 / 1094 / 409
Регистрация: 29.04.2016
Сообщений: 2,625
21.10.2019, 17:41 2
Лучший ответ Сообщение было отмечено Totto как решение

Решение

Totto,


https://codepen.io/Mr_Sergo/pe... itors=1010


Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
let array = [" ", 9, 3, 7, 1, 2, 8, 6, 5, 2, 5, " ", 4, " ", 8, " ", 7, 1, 8, 1, " ", 9, 5, 6, 4, 3, 2, 5, 3, 4, " ", 6, 1, 7, " ", 8, " ", 6, 9, " ", " ", 7, 2, 4, " ", 7, 2, " ", 3, 4, " ", 1, 5, 6, 6, " ", 2, 8, " ", 5, 3, 1, 9, 3, 8, 1, " ", 9, " ", " ", 2, 7, 9, 7, 5, 1, " ", 3, 6, 8, " "];
let newArr = [];
let trr = document.querySelectorAll('.my-td');
 
// заполняем таблицу
trr.forEach((e, i) => {
    if (array[i] == ' ') {
        e.contentEditable = true;
        e.classList.add('editable');
    }
    e.innerText = array[i];
});
 
// запихиваем в массив значения ячеек и выводим в консоль
document.querySelector('button').addEventListener('click',() => {
    newArr = [];
    trr.forEach((e, i) => newArr.push(e.innerText));
    console.log(newArr);
});
 
let editable = document.querySelectorAll('td[contenteditable="true"]');
 
editable.forEach(e => {
    e.oninput = function() {
        this.innerText = this.innerText.replace(/[^\d]/, '').substring(0, 1);  // ограничиваем длину и разрешаем только цифры
    }
});


строка 25
1
21.10.2019, 17:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.10.2019, 17:41
Помогаю со студенческими работами здесь

Как создать ограничение? Надо создать ограничение ввода букв, а то программа виснет!
var a:integer; begin repeat; writeln ('Введите число не равное еденице'); ...

Ограничение ввода
Вообщем имеется три таблицы (поставщики,покупатели и товары) У поставщиков и покупателей есть Ид и...

Ограничение ввода
Помогите в компоненте TEdit ограничить ввод с клавиатуры так, чтобы можно было вводить только '1' и...

Ограничение ввода
Как ограничить ввод в textbox до определенного количества символов? К примеру, чтобы более 5...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru