Как в поле input использовать 2 id

D1
На сайте с 05.02.2014
Offline
0
1797

Есть форма обратной связи без перезагрузки страницы. Как в поле input для ввода даты, использовать 2 id: один для вывода календаря (id="datepicker"), а другой для идентификации данных отправки (id="posArrival") при нажатии на кнопку "отправить".

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="css/style.css">
<script type="text/javascript" src="js/js-form.js"></script>
<title>Заявка на бронирование</title>
<link type="text/css" href="calendar/css/jquery-ui-1.10.2.custom.css" rel="stylesheet" />
<script type="text/javascript" src="calendar/js/jquery-1.8.3.min.js"></script>
<script type="text/javascript" src="calendar/js/jquery-ui-1.10.2.custom.min.js"></script>
<script type="text/javascript" src="calendar/js/jquery.ui.datepicker-ru.js"></script>
<script type="text/javascript">
$(function(){
$("#datepicker").datepicker({
changeMonth: false,
changeYear: false
});
});
</script>
<script type="text/javascript">
$(function(){
$("#datepicker2").datepicker({
changeMonth: false,
changeYear: false
});
});
</script>
<style type="text/css">
div.ui-datepicker {
font-size: 12px;
width:200px;
height:180px;
}
</style>
</head>

<body>


<center><div align="left" id="cor5" class="sidebarForm">
<h4>Заявка на бронирование</h4>
<div align="center" id='loadBar'></div>
<form action="#" method="post" id="cForm2">

<label>Имя:</label>
<div class="input" id="cor5">
<input value="" id="posName" type="text" />
</div>

<label>Фамилия:</label>
<div class="input" id="cor5">
<input value="" id="posSurName" type="text" />
</div>

<label>Дата прибытия:</label>
<div class="input" id="cor5">
<input value="" id="datepicker" type="text" id="posArrival" />
</div>

<label>Дата отъезда:</label>
<div class="input" id="cor5">
<input value="" id="datepicker2" type="text" id="posDepart" />
</div>

<label>E-mail:</label>
<div class="input" id="cor5">
<input value="" id="posEmail" type="text" />
</div>

<label>Пожелания и вопросы:</label>
<div class="textarea" id="cor5"><textarea id="posText"></textarea></div>

<button type="button" id="send">Отправить --></button>

</form></div></center>

Вместе работать не хотят, работает только тот что стоит первым: или не выводится календарь, или не отправляются данные.

Файл проверки введенных данных send.php:

<?php

header("Content-type: text/html; charset=utf-8");
//**********************************************
if(empty($_POST['js'])){

$log =="";
$error="no"; //флаг наличия ошибки posArrival posDepart

$posName = addslashes($_POST['posName']);
$posName = htmlspecialchars($posName);
$posName = stripslashes($posName);
$posName = trim($posName);

$posSurName = addslashes($_POST['posSurName']);
$posSurName = htmlspecialchars($posSurName);
$posSurName = stripslashes($posSurName);
$posSurName = trim($posSurName);

$posArrival = addslashes($_POST['posArrival']);
$posArrival = htmlspecialchars($posArrival);
$posArrival = stripslashes($posArrival);
$posArrival = trim($posArrival);

$posDepart = addslashes($_POST['posDepart']);
$posDepart = htmlspecialchars($posDepart);
$posDepart = stripslashes($posDepart);
$posDepart = trim($posDepart);

$posEmail = addslashes($_POST['posEmail']);
$posEmail = htmlspecialchars($posEmail);
$posEmail = stripslashes($posEmail);
$posEmail = trim($posEmail);

$posText = addslashes($_POST['posText']);
$posText = htmlspecialchars($posText);
$posText = stripslashes($posText);
$posText = trim($posText);

//Проверка правильность имени posSurName
if(!$posName || strlen($posName)>20 || strlen($posName)<3) {
$log.="<li>Неправильно заполнено поле \"Ваше имя\" (3-15 символов)!</li>"; $error="yes"; }

//Проверка наличия Фамилии
if (empty($posSurName))
{
$log .= "<li>Для бронирования необходимо указать Фамилию</li>";
$error = "yes";
}

//Проверка наличия Даты прибытия
if (empty($posArrival))
{
$log .= "<li>Пожалуйста укажите дату прибытия</li>";
$error = "yes";
}

//Проверка наличия Даты отъезда
if (empty($posDepart))
{
$log .= "<li>Пожалуйста укажите дату отъезда</li>";
$error = "yes";
}

//Проверка email адреса
function isEmail($posEmail)
{
return(preg_match("/^[-_.[:alnum:]]+@((([[:alnum:]]|[[:alnum:]][[:alnum:]-]*[[:alnum:]])\.)+(ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)$|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i"
,$posEmail));
}

if($posEmail == '')
{
$log .= "<li>Пожалуйста, введите Ваш email!</li>";
$error = "yes";

}

else if(!isEmail($posEmail))
{

$log .= "<li>Вы ввели неправильный e-mail. Пожалуйста, исправьте его!</li>";
$error = "yes";
}

//Проверка наличия введенного текста комментария
if (empty($posText))
{
$log .= "<li>Необходимо указать текст сообщения!</li>";
$error = "yes";
}

//Проверка длины текста комментария
if(strlen($posText)>1010)
{
$log .= "<li>Слишком длинный текст, в вашем распоряжении 1000 символов!</li>";
$error = "yes";
}

//Проверка на наличие длинных слов
$mas = preg_split("/[\s]+/",$posText);
foreach($mas as $index => $val)
{
if (strlen($val)>60)
{
$log .= "<li>Слишком длинные слова (более 60 символов) в тексте записи!</li>";
$error = "yes";
break;
}
}
sleep(2);

//Если нет ошибок отправляем email
if($error=="no")
{
//Отправка письма админу о новом комментарии
$to = "suport@gmail.com";//Ваш e-mail адрес
$mes = "$posName $posSurName отправил Вам заявку
Дата прибытия: $posArrival
Дата отъезда: $posDepart
Пожелания: \n\n$posText";

$from = $posEmail;
$sub = '=?utf-8?B?'.base64_encode('Новая заявка').'?=';
$headers = 'From: '.$from.'
';
$headers .= 'MIME-Version: 1.0
';
$headers .= 'Content-type: text/plain; charset=utf-8
';
mail($to, $sub, $mes, $headers);
echo "1"; //Всё Ok!
}
else//если ошибки есть
{
echo "<p style='font: 13px Verdana;'><font color=#FF3333><strong>Ошибка !</strong></font></p><ul style='list-style: none; font: 11px Verdana; color:#000; border:1px solid #c00; border-radius:5px; -moz-border-radius:5px; -webkit-border-radius:5px; background-color:#fff; padding:5px; margin:5px 10px;'>".$log."</ul><br />"; //Нельзя отправлять пустые сообщения

}
}
Хелпзонович
На сайте с 15.06.2005
Offline
133
#1

Никак. Вы не в ту сторону копаете.

Надо не 2 id. Надо id datepicker сменить в скрипте, а айди оставить один - posArrival.


<script type="text/javascript">
$(function(){
$("#posArrival").datepicker({
changeMonth: false,
changeYear: false
});
});
</script>
Вы там держитесь! Хорошего вам настроения. Здоровья.
Mad_Man
На сайте с 10.11.2008
Offline
162
#2

В атрибутах `id ` должен быть указан единожды. Множественными могут быть классы и записываются они как `class="first second ..."`.

Ваша задача смешна до безобразия и не требует двух `id` в одном элементе. Более того, официальная API юзает классы в качестве селекторов для примеров работы.

И вдобавок к этому почитайте что-нибудь по jQuery, чтобы не писать два одинаковых куска кода для двух разных селекторов. Достаточно же написать их перечислением.

D1
На сайте с 05.02.2014
Offline
0
#3
Хелпзонович:
Никак. Вы не в ту сторону копаете.
Надо не 2 id. Надо id datepicker сменить в скрипте, а айди оставить один - posArrival.

<script type="text/javascript">
$(function(){
$("#posArrival").datepicker({
changeMonth: false,
changeYear: false
});
});
</script>

Во блин как просто! Огромное спасибо. Уже полдня бьюсь. Бегу изучать скрипты.

---------- Добавлено 05.02.2014 в 12:16 ----------

Mad_Man:
В атрибутах `id ` должен быть указан единожды. Множественными могут быть классы и записываются они как `class="first second ..."`.

Ваша задача смешна до безобразия и не требует двух `id` в одном элементе. Более того, официальная API юзает классы в качестве селекторов для примеров работы.

И вдобавок к этому почитайте что-нибудь по jQuery, чтобы не писать два одинаковых куска кода для двух разных селекторов. Достаточно же написать их перечислением.

Ошибку понял. Большое спасибо за волшебный пендель 😂

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий