Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Как сделать replace в input div? (https://javascript.ru/forum/jquery/47395-kak-sdelat-replace-v-input-div.html)

Chamus 22.05.2014 12:48

Как сделать replace в input div?
 
Всем здравствуйте. Изучаю jquery и наткнулся на одну сложность. Возможно я до этого еще не дошел или пропустил.

Я бы хотел заменять запятые в input, в котором есть div, в который и попадает значение.
<input tabindex="12" id="613" class="r" type="text" value="" name="ten_l" placeholder="см">
<div id="inner-editor">,,,,,</div>
</input>

В div, где запятые, надо чтобы эти самые запятые менялись на точки с помощью change.

Я написал код, но он не работает:
$("input[name='ten_l']").change(function(){
$(this).val($(this).val().toString().replace(/\,/g, '.'));  
});


:help:

Erolast 22.05.2014 13:07

Див внутри строки ввода? А в <title> его запихать не хочешь?
Сперва изучи, что инпут за элемент такой и как его применяют - http://htmlbook.ru/html/input. Код не работает именно потому, что применяешь ты его неправильно.
И да - зачем ты и так строковое значение приводишь к строке?

devote 22.05.2014 13:09

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

<input tabindex="12" id="613" class="r" type="text" value="" name="ten_l" placeholder="см" />
<div id="inner-editor">,,,,,</div>

<script type="text/javascript">
  $("input[name='ten_l']").change(function() {
    $(this).next().html($(this).val().replace(/,/g, '.'));
  });
</script>

Chamus 22.05.2014 13:17

Цитата:

Сообщение от Erolast (Сообщение 312855)
Див внутри строки ввода? А в <title> его запихать не хочешь?
Сперва изучи, что инпут за элемент такой и как его применяют - http://htmlbook.ru/html/input. Код не работает именно потому, что применяешь ты его неправильно.
И да - зачем ты и так строковое значение приводишь к строке?

Да, див внутри инпута. Если бы его там не было, я бы и не задавал этот вопрос. Я и так знаю, что я неправильно его применяю, раз он не работает! Эти инпуты для цифр, поэтому и преобразовываю в строку.

Chamus 22.05.2014 13:21

Цитата:

Сообщение от devote (Сообщение 312857)
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

<input tabindex="12" id="613" class="r" type="text" value="" name="ten_l" placeholder="см" />
<div id="inner-editor">,,,,,</div>

<script type="text/javascript">
  $("input[name='ten_l']").change(function() {
    $(this).next().html($(this).val().replace(/,/g, '.'));
  });
</script>

У меня div в инпуте, а не рядом.
<input tabindex="12" id="613" class="r" type="text" value="" name="ten_l" placeholder="см">
    <div id="inner-editor">,,,,,</div>
</input>

devote 22.05.2014 13:43

Цитата:

Сообщение от Chamus
У меня div в инпуте, а не рядом.

вы так и не поняли о том что вам написал Erolast, input по своей природе не может содержать дочерних элементов. Ваш вот этот код:
<input tabindex="12" id="613" class="r" type="text" value="" name="ten_l" placeholder="см">
    <div id="inner-editor">,,,,,</div>
</input>
браузеры преобразовывают в этот:
<input tabindex="12" id="613" class="r" type="text" value="" name="ten_l" placeholder="см" />
<div id="inner-editor">,,,,,</div>
Сколько бы вы не пытались засунуть в input элементов, в результате они все будут лежать рядом с input, но никак не в нем.

Chamus 22.05.2014 14:28

Цитата:

Сообщение от devote (Сообщение 312863)
вы так и не поняли о том что вам написал Erolast, input по своей природе не может содержать дочерних элементов. Ваш вот этот код:
<input tabindex="12" id="613" class="r" type="text" value="" name="ten_l" placeholder="см">
    <div id="inner-editor">,,,,,</div>
</input>
браузеры преобразовывают в этот:
<input tabindex="12" id="613" class="r" type="text" value="" name="ten_l" placeholder="см" />
<div id="inner-editor">,,,,,</div>
Сколько бы вы не пытались засунуть в input элементов, в результате они все будут лежать рядом с input, но никак не в нем.

Когда я ввожу в инпут значение, оно попадает в див этого инпута, который там уже есть!
<input tabindex="12" id="613" class="r" type="text" value="" name="ten_l" placeholder="см">
    #shadow-root (user-agent)
	<div id="inner-editor">,,</div>
	<div pseudo="-webkit-input-placeholder" id="placeholder" style="visibility: hidden; text-overflow: clip;">см</div>
</input>

Я неплохо знаю верстку. Верстка форм - одно их простых для меня. Однако, у меня действительно есть див в инпуте на действующем проекте.

рони 22.05.2014 14:32

Цитата:

Сообщение от Chamus
у меня действительно есть див в инпуте на действующем проекте.

офигеть!!!

Chamus 22.05.2014 14:40

Цитата:

Сообщение от рони (Сообщение 312875)
офигеть!!!

Приветствую. Да, офигеть.

devote 22.05.2014 16:40

Цитата:

Сообщение от Chamus
есть див в инпуте на действующем проекте.

А ты пробовал открыть отладчик в браузере и посмотреть сформированную структуру того что ты пишешь?

Для тебя не поленюсь скриншот выложить:


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