Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Виртуальная клавиатура на textarea - проблема... (https://javascript.ru/forum/misc/63337-virtualnaya-klaviatura-na-textarea-problema.html)

coloboc66 01.06.2016 13:58

Виртуальная клавиатура на textarea - проблема...
 
Вот код:
<textarea id='text'></textarea>
<br/><select id='cons' onchange='func(this.value)'>
<option value=''>согласные</option>
<option value='b'>b</option>
<option value='c'>c</option>
</select>
<select id='vow' onchange='func(this.value)'>
<option value=''>гласные</option>
<option value='a'>a</option>
<option value='o'>o</option>
</select>
<script>
function func(par){
var text=document.getElementById('text').innerHTML+par;
document.getElementById('text').innerHTML=text;
var sel=document.getElementsByTagName('select');
for (var i=0;i<sel.length;i++)sel[i].selectedIndex='0';
}
</script>

В принципе, работает, но только до того момента, как установлю курсор в поле textarea и кнопкой с клавиатуры удалю какую-нибудь вписанную ранее букву.
После этого показывать вписанные в поле буквы начисто отказывается, хотя веб-консоль Лисы никаких ошибок не выдаёт.
Посоветуйте что-нибудь для решения проблемы!
Спасибо.

Botik21 01.06.2016 14:31

<textarea id='text'></textarea>
<br>
<select id='cons' onchange='func(this)'>
  <option value=''>согласные</option>
  <option value='b'>b</option>
  <option value='c'>c</option>
</select>
<select id='vow' onchange='func(this)'>
  <option value=''>гласные</option>
  <option value='a'>a</option>
  <option value='o'>o</option>
</select>
<script type="text/javascript">
  var kb = {
    area: document.getElementById('text')
  };

  function func(select) {
    kb.area.value += select.value;
    select.selectedIndex = 0;
  }
</script>

coloboc66 01.06.2016 15:02

to Botik21:
Спасибо, это работает!
Только всё-равно не понимаю, почему МОЙ код плохо работал...

Botik21 01.06.2016 15:06

Надо было писать не в innerHTML, а в value

coloboc66 02.06.2016 11:26

А как сделать селектом переход на новую строку?
вот это:
<select onchange='func(this)'>
<option value=''></option>
<option value='l\n'>переход</option>
</select>

не работает (скрипт выше).

Botik21 02.06.2016 14:42

На правах наркомании хоть и работает:
<option value='
'>Новая строка</option>

Или так:
function func(select) {
  kb.area.value += select.value.replace('\\n', '\n');
  select.selectedIndex = 0;
}

Хотя в целом идея вводить символы селектом очень странная :)

рони 02.06.2016 18:53

Botik21,
[HTML run][/HTML]
на всякий случай для поста №2


Часовой пояс GMT +3, время: 19:36.