Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Конфликт функции ввода даты и динамических полей (https://javascript.ru/forum/events/28320-konflikt-funkcii-vvoda-daty-i-dinamicheskikh-polejj.html)

Pyrex 15.05.2012 02:21

Конфликт функции ввода даты и динамических полей
 
Здравствуйте, уважаемые форумчане! Я новичок в js, и у меня возникла проблема.
Функция ввода даты должна инициализироваться каждый раз, когда вызывается функция добавления динамического поля, иначе с помощью js ввести в новое поле дату будет нельзя. Однако здесь появляется проблема: в "старых" полях после каждого добавления, а значит, и каждой инициализации, требуется кликнуть по дате на один раз больше. Соответственно, на 10 новых, динамически добавленных полей потребуется 11 кликов по первому, изначальному полю. Это же просто жуть. Как разрешить эту дилемму? Может быть, можно как-то "натравить" функцию ввода даты только на вновь добавленные поля?

<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">    
    <script type="text/javascript" src="add_input.js"></script>
    <script type="text/javascript" src="jquery.min.js"></script>
    <script type="text/javascript" src="jquery.date_input.js"></script>
    <script type="text/javascript">$($.date_input.initialize);</script>
    <link rel="stylesheet" href="date_input.css" type="text/css">
  </head>
  <body>
    <div id="dates">
      <div>
        <input name="date" class="date_input" size="20">
        <input type="button" value="+" onclick="add_input(this.parentNode)">
      </div>
    </div>
  </body>
</html>


содержимое add_input.js:
function add_input(obj)
{
  var new_input=document.createElement('div');
  new_input.innerHTML='<br><input name="new_date" class="date_input">';
  new_input.innerHTML=new_input.innerHTML+'<input type="button" value="+" onclick="add_input(this.parentNode)">';
  new_input.innerHTML=new_input.innerHTML+'<input type="button" value="-" onclick="del_input(this.parentNode)">';
  if (obj.nextSibling)
    document.getElementById('dates').insertBefore(new_input,obj.nextSibling)
  else document.getElementById('dates').appendChild(new_input);
  $($.date_input.initialize);
}
function del_input(obj)
{
  document.getElementById('dates').removeChild(obj)
}


Скрипты ввода даты брал отсюда без изменений (пока что не мой уровень).
Заранее спасибо!

bes 15.05.2012 11:36

Не совсем понятно, чего вы хотите добиться, я просто вставил ваш код в тот пример и всё нормально заработало (новое поле добавляется, по щелчку открывается таблица, в которой выбираем дату и она устанавливается в это новое поле).


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