2017-01-10 3 views
0

Я создаю форму с элементами ввода, использующими jQuery datepicker. Вот пример того, что мой HTML выглядит для этих входов:цикл цикла javascript для переназначения идентификатора элемента

<td style="width:15%"><input type="text" name="datepicker" id="Tb3fromRow10"/></td> 
<td style="width:15%"><input type="text" name="datepicker" id="Tb3toRow10"/></td> 

Я бег на вопрос, когда мне нужен формат дата будет мм/дд/гггг, но база данных принимают только форматы в гггге -mm-дд. В результате я пытаюсь взломать его, указав его как mm/dd/yyyy в форме, но у меня есть eventlistener onSubmit, который меняет все форматы дат на yyyy-mm-dd, чтобы база данных могла его записывать , Чтобы сделать это, я пытаюсь написать цикл, который создает массив на основе getElementsByName (так как я назвал все эти элементы «datepicker»), изменяет все их форматы и затем переназначает все их идентификаторы. Я думаю, что я сделал первые два шага, но я застрял на последний шаг переназначения идентификаторов:

var myArray = document.getElementsByName('datepicker[]'); 
    for(var i = 0; i < myArray.length; i++) { 
    var sep = myArray.split('/'); 
    var newDate = sep[2]+'-'+sep[0]+'-'+sep[1]; 
} 
**document.getElementsByName('datepicker[]').value = newDate;** 

Я знаю, последняя строка неверна, может кто-то помочь мне с перераспределением всех дат элементов их соответствующие идентификаторы?

Спасибо!

+0

Какой тип даты и вы подтверждаете поля формы? клиент как сервер? – lordkain

+0

Почему вы не используете бэкэнд, чтобы иметь дело с особенностями вашей БД? поскольку вы уже используете PHP: 'date ('Ym-d', strtotime ($ str)),' – Thomas

ответ

1

Вы не переназначаете идентификаторы. Но вы не используете myArray правильно. Вот то, что вам нужно изменить в предположении name="datepicker[]" и не name="datepicker" как в HTML части вашего примера:

var myArray = document.getElementsByName('datepicker[]'); // or ("datepicker") depending on their name 
for(var i = 0; i < myArray.length; i++) { 
    var sep = myArray[i].split('/'); 
    var newDate = sep[2]+'-'+sep[0]+'-'+sep[1]; 
    myArray[i].value = newDate; 
} 

в любом случае, почему бы не проверить и переформатировать на сервере перед хранением?

+0

oops, так что мой html на самом деле name = "datepicker", поэтому моя первая строка должна быть var myArray = document.getElementsByName (" DatePicker "); тогда? Также я работаю над ServiceNow, и я пробовал все, чтобы переформатировать дату в их системе ... не уверен, что это ошибка или что. Благодаря! – Dave

+0

Вам нужно использовать имя, которое имеют поля. Будь то datepicker или datepicker [] – mplungjan

+0

hm ok, я попробовал оба и по-прежнему не работает по какой-то причине ... – Dave

Смежные вопросы