Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   вставка функции в скрипт (https://javascript.ru/forum/dom-window/54703-vstavka-funkcii-v-skript.html)

gamera 28.03.2015 20:46

вставка функции в скрипт
 
Всем привет, как вставить функцию в скрипт?? есть два скрипта, один выводит дату, второй выводит меню, как вставить функию даты во второй скрипт? функцию даты надо вставить вот сюда
$("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>

laimas 28.03.2015 21:06

Для чего вы подключаете jQuery?

gamera 28.03.2015 21:08

для того чтобы вывести селектор выбора даты в поле которое добавляется динамически (по клику добавить поле)

laimas 28.03.2015 21:12

Ну да, и посредством document.write? Зачем же вы подключаете эти десятки КБ, если не используете ее возможности?

$("day()") до такого догадаться....

gamera 28.03.2015 21:16

я только учусь в javascript, подскажите, если не составит труда, как сделать правильно, чтобы заработало?

laimas 28.03.2015 21:24

Выбрасывайте это, и начинайте думать заново. Функция day должна возвращать список, который и можно будет вставить в необходимое. Но что вы делаете в этой функции:

while(i <= 31){
    var i1 = i++;


Это по какому такому календарю? В месяце может может быть 30 и 31, 28 и 29 дней. И это не прихоти JS, это календарь, которым мы пользуемся.

gamera 28.03.2015 21:49

<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>


вот другой код, но опять не выводится функция

рони 28.03.2015 22:00

gamera,
http://jqueryui.com/datepicker/

gamera 28.03.2015 22:02

я его использовал, но он не работает кода я нажимаю добавить новое поле

laimas 28.03.2015 22:04

Это не код, это даже названия не имеет. Вы знаете что такое календарь? И РНР, и Javascript имеют средства для работы с календарными данными, а то что вы представили, это нечто неописуемое.

Могу помочь вам только в одном - дать ссылки для изучения этого материала.

И да, не может быть в JS сценарии такого:

$("<div class='param'><select name='input_name[10]' id='month' onchange='days()'><?php echo $monthOptions; ?> </select></div>" ).insertBefore("#form_status_added");

если этот код не вывод РНР, а если все-таки его вывод то переменная $monthOptions; должна быть определена до вывода.

рони 28.03.2015 22:06

gamera,
добавили поле -- потом запустили плагин для этого поля

gamera 28.03.2015 22:16

это как? я сейчас сделал вот так
<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 уже не работет

рони 28.03.2015 22:43

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: '&#x3c;Пред',
		nextText: 'След&#x3e;',
		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>

gamera 28.03.2015 22:49

Огромное спасибо!


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