Я нашел похожие вопросы здесь, но большинство решений не работают для меня. У меня есть форма с datepicker, и я хочу передать выбранную дату в файл php, но она не работает.
Мой html выглядит примерно так:
<form name="myForm" action="createevent.php" onsubmit="return validateForm()" method="get"> <p>Date<input type="text" id="mydate" /></p> <input type="submit" name="submit" value="Submit" /> </form>
Javascript:
$(function() { $.datepicker.setDefaults($.extend($.datepicker.regional[""])); $("#mydate").datepicker({ onSelect: function(dateText, inst) { var dateAsString = dateText; alert (dateAsString); //this prints out the right value. alert (mydate.value); //this value is the same as dateText } });
createevent.php
function CreateEvent() { if(isset($_GET['submit'])) { $mydate=$_GET['mydate']; echo $mydate; } }
Когда я предупреждаю (mydate.value), он дает правильное значение. Но когда я повторяю $ mydate в своем php-файле, он ничего не показывает. Любая помощь приветствуется!
Обновить:
Спасибо вам, ребята! Я сделал глупую ошибку. Добавляет атрибут name. У меня есть следующий вопрос. У меня тоже есть время, и он возвращает что-то вроде 01:21. Мой день возвращает что-то вроде 01/01/2013. Есть ли способ объединить эти два и сделать его типом даты, чтобы я мог добавить в свою базу данных? Спасибо огромное!
Поскольку кажется, что вы ничего не делаете с датой после того, как onSelect
уволил, единственное, что я не вижу, это то, что ваш вход не имеет атрибута имени, и он не будет виден в $_GET
Измените свой вход на что-то вроде:
<input type="text" id="mydate" name="mydate"/>
И это должно сработать.
Если вы планируете хранить дату и время в базе данных MySQL, вы можете сделать что-то вроде этого. Сначала в вашей форме:
<form name="myForm" action="createevent.php" onsubmit="return validateForm()" method="get"> <p>Date<input type="text" id="mydate" name="mydate"/></p> <p>Time<input type="text" id="mytime" name="mytime"/></p> <input type="hidden" id="mydatetime" name="mydatetime"/> <input type="submit" name="submit" value="Submit" /> </form>
Затем, в вашей функции validateForm()
, я бы добавил что-то вроде этого:
var date = $('#mydate').val(), time = $('#mytime').val(); var datetime = [date.replace('/','-'),time].join(' '); // 01-01-2013 01:21 $('#mydatetime').val(datetime);
Я не пробовал, но мне интересно, может быть, это просто ваш контроль получил «имя» отсутствует, попробуйте изменить его следующим образом:
<input type="text" id="mydate" name="mydate"/>
Сделано изменение в поле ввода
<input type="text" id="mydate" />
К:
<input type="text" id="mydate" name="mydate"/>
Когда вы отправите форму, она представит значение имени текстового поля mydate, и вы сможете получить его с помощью $_GET["mydate"]