вставка функции в скрипт
Всем привет, как вставить функцию в скрипт?? есть два скрипта, один выводит дату, второй выводит меню, как вставить функию даты во второй скрипт? функцию даты надо вставить вот сюда
$("day()").insertBefore("#form_status_added"); или вот на скрине выделил где: http://i.imgur.com/GhdVqC5.png <script> function day(){ document.write('<option value="0">день</option>'); var i = 1; while(i <= 31){ var i1 = i++; document.write('<option value="' + i1 + '">' + i1 + '</option>'); } } function month(){ document.write('<option value="0">месяц</option>'); var month_name = ['', 'январь', 'февраль', 'март', 'апрель', 'май', 'июнь', 'июль', 'август', 'сентябрь', 'октябрь', 'ноябрь', 'декабрь']; var g = 1; while(g <= month_name.length){ var g1 = g++; document.write('<option value="' + g1 + '">' + month_name[g1] + '</option>'); } } </script> <script> $(function() { $("#form_status_added").click(function () { var number_data = $("#form_data_number").text(); number_data++; $("#form_data_number").html(number_data); $("day()").insertBefore("#form_status_added"); }) }); </script> |
Для чего вы подключаете jQuery?
|
для того чтобы вывести селектор выбора даты в поле которое добавляется динамически (по клику добавить поле)
|
Ну да, и посредством document.write? Зачем же вы подключаете эти десятки КБ, если не используете ее возможности?
$("day()") до такого догадаться.... |
я только учусь в javascript, подскажите, если не составит труда, как сделать правильно, чтобы заработало?
|
Выбрасывайте это, и начинайте думать заново. Функция day должна возвращать список, который и можно будет вставить в необходимое. Но что вы делаете в этой функции:
while(i <= 31){ var i1 = i++; Это по какому такому календарю? В месяце может может быть 30 и 31, 28 и 29 дней. И это не прихоти JS, это календарь, которым мы пользуемся. |
<script> $(function() { $("#form_status_added").click(function () { var number_data = $("#form_data_number").text(); number_data++; $("#form_data_number").html(number_data); $("<div class='param'><select name='input_name[10]' id='month' onchange='days()'><?php echo $monthOptions; ?> </select></div>" ).insertBefore("#form_status_added"); }) }); </script> <?php $monthOptions = '<option value="0">Месяц</option>'; $dayOptions = '<option value="0">День</option>'; $yearOptions = '<option value="0">Год</option>'; $monthName = array(null,"Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"); foreach ($monthName as $key){ for($month=0;$month<count($key);$month++) { $monthName = date("F", mktime(0, 0, 0, $month)); $monthOptions .= "<option value=\"{$month}\">{$key}</option>\n"; }} for ($day=1;$day<=31;$day++) { $dayOptions .= "<option value=\"{$day}\">{$day}</option>\n"; } for ($year=2013;$year>=1920;--$year) { $yearOptions .= "<option value=\"{$year}\">{$year}</option>\n"; } ?> <script type="text/javascript"> function days() { var monthSel = document.getElementById('month').value; var daySel = document.getElementById('day'); var dayInmonth = 31; if (monthSel == 2) { dayInmonth = 29; } else if (monthSel == 4 || monthSel == 6 || monthSel == 9 || monthSel == 11) { dayInmonth = 30; } if (daySel.options.length > daysInmonth) { daySel.options.length = daysInmonth; } while (daySel.options.length != daysInmonth) { daySel.options[daySel.length] = new Options(daySel.length+1, daySel.length+1, false); } return; } </script> вот другой код, но опять не выводится функция |
gamera,
http://jqueryui.com/datepicker/ |
я его использовал, но он не работает кода я нажимаю добавить новое поле
|
Это не код, это даже названия не имеет. Вы знаете что такое календарь? И РНР, и Javascript имеют средства для работы с календарными данными, а то что вы представили, это нечто неописуемое.
Могу помочь вам только в одном - дать ссылки для изучения этого материала. И да, не может быть в JS сценарии такого: $("<div class='param'><select name='input_name[10]' id='month' onchange='days()'><?php echo $monthOptions; ?> </select></div>" ).insertBefore("#form_status_added"); если этот код не вывод РНР, а если все-таки его вывод то переменная $monthOptions; должна быть определена до вывода. |
gamera,
добавили поле -- потом запустили плагин для этого поля |
это как? я сейчас сделал вот так
<script language="javascript"> var items=1; function AddItem() { div=document.getElementById("items"); button=document.getElementById("add"); items++; newitem="<strong>Поле " + items + ": </strong>"; newitem+="<input type=\"text\" class=\"datepickerTimeField\" name=\"item" + items; newitem+="\" size=\"45\"><br>"; newnode=document.createElement("span"); newnode.innerHTML=newitem; div.insertBefore(newnode,button); } </script> <form name="form1"> <div ID="items"> <strong>Поле 1: </strong><input type="text" name="item1" size="45"><br> <input type="button" value="Добавить поле" onClick="AddItem();" ID="add"> </div> </form> и когда я нажимаю добавить поле, то в новом поле datapicker уже не работет |
gamera,
<!doctype html> <html lang="en"> <head> <meta charset="utf-8" /> <title>jQuery UI Datepicker - Default functionality</title> <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/sunny/jquery-ui.css" /> <script src="http://code.jquery.com/jquery-1.9.1.js"></script> <script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script> <style type="text/css"> body{ font-size: 12px; } .active .ui-state-default{ background: rgba(102, 255, 102, 1) } .active:hover .ui-state-default{ background: rgba(255, 255, 0, 1) } </style> <script> $(function() { $.datepicker.regional['ru'] = { closeText: 'Закрыть', prevText: '<Пред', nextText: 'След>', currentText: 'Сегодня', monthNames: ['Январь','Февраль','Март','Апрель','Май','Июнь', 'Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'], monthNamesShort: ['Янв','Фев','Мар','Апр','Май','Июн', 'Июл','Авг','Сен','Окт','Ноя','Дек'], dayNames: ['воскресенье','понедельник','вторник','среда','четверг','пятница','суббота'], dayNamesShort: ['вск','пнд','втр','срд','чтв','птн','сбт'], dayNamesMin: ['Вс','Пн','Вт','Ср','Чт','Пт','Сб'], dateFormat: 'dd.mm.yy', firstDay: 1, isRTL: false, showOtherMonths:true, selectOtherMonths:true, changeMonth:true, changeYear: false, showAnim:'scale' }; $.datepicker.setDefaults($.datepicker.regional['ru']); AddItem() }); </script> </head> <body> <script language="javascript"> var items=0; function AddItem() { var div =document.getElementById("items"); var button=document.getElementById("add"); items++; var newitem="<strong>Поле " + items + ": </strong>"; newitem+="<input type=\"text\" class=\"datepickerTimeField\" name=\"item" + items; newitem+="\" size=\"45\"><br>"; var newnode=document.createElement("span"); newnode.innerHTML=newitem; div.insertBefore(newnode,button); $('.datepickerTimeField', newnode).datepicker() } </script> <form name="form1"> <div ID="items"> <input type="button" value="Добавить поле" onClick="AddItem();" ID="add"> </div> </form> </body> </html> |
Огромное спасибо!
|
Часовой пояс GMT +3, время: 11:25. |