Показать сообщение отдельно
  #1 (permalink)  
Старый 15.05.2012, 02:21
Новичок на форуме
Отправить личное сообщение для Pyrex Посмотреть профиль Найти все сообщения от Pyrex
 
Регистрация: 15.05.2012
Сообщений: 3

Конфликт функции ввода даты и динамических полей
Здравствуйте, уважаемые форумчане! Я новичок в 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)
}


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

Последний раз редактировалось Pyrex, 15.05.2012 в 02:29.
Ответить с цитированием