Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.84/67: Рейтинг темы: голосов - 67, средняя оценка - 4.84
0 / 0 / 0
Регистрация: 03.12.2009
Сообщений: 9

Вставить input text при клике по ячейке

03.12.2009, 21:55. Показов 13811. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте у меня есть такая таблица:
HTML5
1
2
3
4
5
6
7
8
<table>
   <tr>
          <td>Ячейка 1</td>
          <td>Ячейка 2</td>
          <td>Ячейка 3</td>
          <td>Ячейка 4</td>
   </tr>
</table>
Мне нужно чтобы при клике на ячейку в ней появлялся input text. Подскажите как придумать такое решение?
P.S: я так думаю, что нужно обрабатывать событие onclick ?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.12.2009, 21:55
Ответы с готовыми решениями:

При клике по ячейке вставить текст в другую ячейку этой же таблицы
Здравствуйте! У меня есть таблица: &lt;table&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td id=&quot;s1&quot;...

ColorGrid- нужно при правом клике менялся фон (BG) Edit1.Text При левом клике менялся шрифт (FG) Edit1.Text и
ColorGrid- нужно при правом клике менялся фон (BG) Edit1.Text При левом клике менялся шрифт (FG) Edit1.Text и при нажатии на галочку...

Написать обработчик событий, чтобы при клике на ячейке таблицы в ячейке появилась картинка.
Здравствуйте,прошу, помогите пожалуйста((( написать обработчик событий, чтобы при клике ячейке таблицы (5x5) в таблице появилась картинка ...

11
 Аватар для Vanstorm
2773 / 341 / 22
Регистрация: 15.01.2008
Сообщений: 2,614
03.12.2009, 22:01
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    <script>
        
        function script_(whf)
          {
            whf.innerHTML='<input type="input">'
          }</script>
    <table>
    <tr>
          <td onclick="script_(this)">Ячейка 1</td>
          <td onclick="script_(this)">Ячейка 2</td>
          <td onclick="script_(this)">Ячейка 3</td>
          <td onclick="script_(this)">Ячейка 4</td>
    </tr>
    </table>
0
0 / 0 / 0
Регистрация: 03.12.2009
Сообщений: 9
03.12.2009, 22:34  [ТС]
Vanstorm, Спасибо Вам, а как сделать чтобы input text был ровно по размерам ячейки?

Добавлено через 23 минуты
Vanstorm, Вы знаете, я почему-то не могу поставить курсор в этот инпут, точнее от ставится но тут же пропадает. Подскажите с чем это связано?
0
 Аватар для Vanstorm
2773 / 341 / 22
Регистрация: 15.01.2008
Сообщений: 2,614
03.12.2009, 23:27
Это связано с тем что при нажатии на "td" вы каждый раз создаёте инпут. чтобы этого исбежать надо собрать предпроверку:
JavaScript
1
2
3
4
5
        function script_(whf)
          {
            if (whf.firstChild.nodeType==3) {
            whf.innerHTML='<input type="input">'}
          }
0
0 / 0 / 0
Регистрация: 03.12.2009
Сообщений: 9
03.12.2009, 23:46  [ТС]
Vanstorm, еще раз огромное Вам спасибо. Простите за большое кол-во вопросов, не могли бы Вы подсказать вот что:
1) Объясните пожалуйста смысл этой строчки firstChild.nodeType==3, т.е понятно что речь идет родительском объекте td, а почему == 3 что это за число?
2)
а как сделать чтобы input text был ровно по размерам ячейки?
3) Можно ли сделать чтобы при потере фокуса, input удалялся бы, а введенное в него значение записывалось бы в ячейку?
P.S: Еще раз прошу прощения за такое кол-во вопросов в рамке одного топика.
0
 Аватар для Vanstorm
2773 / 341 / 22
Регистрация: 15.01.2008
Сообщений: 2,614
04.12.2009, 00:10
  1. nodeType - это тип узла т.е если узел текстовый свойство nodeType равняется 3, у input nodeType будет другим т.е не надо заменять input на input
  2. C этим сложнее. Можно указывать абсолютные размеры.
  3. Функция "киллер "
    JavaScript
    1
    2
    3
    4
    5
    6
    
              function Killer(whf)
              {
            
                name = whf.value;
                whf.parentNode.innerHTML=name;
              }
    и вызываем её обработчиком onblur - <input onblur="Killer(this)" type="input">'
0
0 / 0 / 0
Регистрация: 03.12.2009
Сообщений: 9
04.12.2009, 08:30  [ТС]
Vanstorm, отлично, то что мне нужно спасибо Вам большое, с шириной inputa я тогда с помощью css попробую. Кстати а почему когда я первый раз щелкаю по ячейки - то инпут появляется все нормально, ввожу значение - далее фокус теряется, значение записывается все ок, но когда пытаюсь второй раз щелкнуть по этой же ячейки, то инпут почему-то не появляется? Один раз только можно его создавать?
0
 Аватар для Vanstorm
2773 / 341 / 22
Регистрация: 15.01.2008
Сообщений: 2,614
04.12.2009, 09:05
Немного модифицируем функцию Скрипт_
JavaScript
1
2
3
4
5
6
7
8
9
        function script_(whf)
          {
            if (whf.firstChild.nodeType==3) 
            {
            name=whf.innerHTML;
            whf.innerHTML='<input onblur="Killer(this)" type="input">'
            whf.firstChild.value=name;
            }
          }
1
0 / 0 / 0
Регистрация: 03.12.2009
Сообщений: 9
04.12.2009, 14:12  [ТС]
Цитата Сообщение от Vanstorm Посмотреть сообщение
[LIST=1][*]C этим сложнее. Можно указывать абсолютные размеры.
хмм, а что если в
Code
1
whf.innerHTML='<input onblur="Killer(this)" type="input">'
вставить параметр SIZE и присвоить ему ширину ячейки как-нибудь так:
Code
1
whf.innerHTML='<input onblur="Killer(this)" type="input" SIZE=whf.height>'
или как-нибудь так?
0
0 / 0 / 0
Регистрация: 03.12.2009
Сообщений: 9
04.12.2009, 21:04  [ТС]
Vanstorm, проблему решил очень просто:
HTML5
1
whf.innerHTML='<input type="input" style='width: 100%;'>'
Добавлено через 1 час 4 минуты
Vanstorm, прошу прощения посмотрите пожалуйста этот код:
PHP/HTML
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
28
29
30
31
32
33
34
<style type="text/css">
    textarea
    {
        border:none;
        width:100%;
        overflow:hidden;
    } 
</style>
<script>
        function script_(whf)
          {
            if (whf.firstChild.nodeType==3) 
            {
             name=whf.innerHTML;
             whf.innerHTML='<textarea onblur="Killer(this)" name="my"></textarea>'
             whf.firstChild.value=name;
             my.focus();
            }
          }
         function Killer(whf)
          {
            name = whf.value;
            whf.parentNode.innerHTML= name;
            whf.onblur = null;
          }
           </script>
    <table border="1">
    <tr>
          <td onclick="script_(this)">Ячейка 1</td>
          <td onclick="script_(this)">Ячейка 2</td>
          <td onclick="script_(this)">Ячейка 3</td>
          <td onclick="script_(this)">Ячейка 4</td>
    </tr>
    </table>
все хорошо, вот только когда щелкаю мышкой, то создается текст ареа на одну строчку больше чем само содержимое ячейки. Почему так?
P.S: вместо input text использую textarea.
0
 Аватар для Vanstorm
2773 / 341 / 22
Регистрация: 15.01.2008
Сообщений: 2,614
04.12.2009, 22:08
my.focus();
Это не правильно. Во первых вы создаете много элементов с одним именем, в данном контексте это не умесно т.к вам надо фокусироваться на одном, во вторых вы пытаетесь "сфокусироваться" не на элементе, а на стороннем обьекте my.
Code
1
2
3
Error: my is not defined
Source File: file:///F:/My%20favourite%20folder/Program%20Files/Utilities/PortableApps/Documents/cyberforum.html
Line: 66
для получения элемента используется document.getElementsByName а вообще я бы советовал использовать средства обхода дерева документа, если конечно это возможно. т.е whf.firstChild.focus();.
Что касаемо лишней строки то это просто узначение высоты, которое ставится по умолчанию. Надо сделать тоже что и с длинной т.е в стиль прописать height:100%; в стиль
0
0 / 0 / 0
Регистрация: 03.12.2009
Сообщений: 9
05.12.2009, 14:21  [ТС]
Vanstorm, Спасибо Вам большое, Вы мне очень помогли. Я нашел немного другой подход к решению моей задачи, но там есть некоторая проблема. Если у Вас будет время посмотрите пожалуйста, Я вывел в отдельный топик. Спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.12.2009, 14:21
Помогаю со студенческими работами здесь

результат выборки из БД: rs.next(); String text=rs.getString('text'); <input type=text name=name value=<%=text%>>
Возникла проблема в текстовое поле надо вывести результат выборки из БД rs.next(); String text=rs.getString('text'); &lt;input...

Вставить переменную в <input type='text name='text_1' title=
есть переменная var С=a-b есть поле &lt;input type='text name='text_1' title=(вот к этому месту и относится вопрос, можноли вставить сюда...

Как с помощью js найти тег title и вставить в него введённый в input text заголовок?
Я использую CKEditor. Как с помощью js найти тег title и вставить в него введённый в input text заголовок. Если тега нет, то добавить.

Открытие новой формы при клике по ячейке
Нужно, чтобы форма открывалась при клике на определенную ячейку в таблице. Я использовала этот код procedure...

Смена input при клике
Добрый день! Немного странное задание, но всё же. У меня есть html код, в котором прописана страница, представляющая из себя...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru