Настройка подсказки только для чтения

Я устанавливаю переменную, равную вводу из подсказки, затем она передается и используется для отображения на моей странице. Однако я не думаю, что подсказка - это то, что мне нужно использовать, но я понятия не имею, как это сделать иначе. По сути, как только он предложит им, у него уже есть электронная почта в поле подсказки, и это то, что я хочу, но я не хочу, чтобы они могли изменить поле, чтобы избежать ввода другого электронного письма, отличного от того, которое установлено в их сеансе. . Любой совет? Мой код ниже.

    selectable: true,
   selectHelper: true,
   select: function(start, end, allDay) {
   var title = prompt('Confirm Email:','<?php echo "{$_SESSION['email']}"; ?>');



   if (title) {
   var start = $.fullCalendar.formatDate(start, "Y-MM-DD HH:mm:ss");
   var end = $.fullCalendar.formatDate(end, "Y-MM-DD HH:mm:ss");
   $.ajax({
       url: 'add_events.php',
       data: 'title='+ title+'&start='+ start +'&end='+ end,
       type: "POST",
       success: function(json) {
       alert('Added Successfully');
       }
   });

чем почему вы используете значение? Почему вы не используете подтверждение?

epascarello 06.03.2019 16:19

Что вы на самом деле пытаетесь сделать? Если вы не хотите, чтобы они изменили адрес электронной почты, не используйте prompt или confirm или любой другой метод JavaScript, просто покажите адрес электронной почты в HTML-коде страницы.

meagar 06.03.2019 16:21

«Я не хочу, чтобы они могли изменить поле, чтобы избежать ввода электронной почты, отличной от той, которая установлена ​​​​в их сеансе» ... затем, когда он будет отправлен на сервер, просто используйте адрес электронной почты, сохраненный в сеансе. Даже не пытайтесь помещать это в запрос ajax или что-то в этом роде. Почему вы вообще общаетесь с пользователем по этому поводу? Если вы не хотите, чтобы они подтверждали или изменяли его, не показывайте его... (или просто поместите его в обычный старый div или что-то еще где-нибудь на странице). Его не нужно использовать где-либо в вашем JS-коде.

ADyson 06.03.2019 16:22
but I don't want them to be able to change the field to avoid the input of a different email для этого и нужен атрибут readonly.
ArtisticPhoenix 06.03.2019 16:23

@ArtisticPhoenix хм, да, но также результат используется для отправки обратно в вызове ajax ... и пользователь все равно может вмешиваться в это, если захочет ... так что на самом деле лучше просто полностью отказаться от него со стороны клиента код и получить значение из сеанса, когда запрос ajax поступает на сервер.

ADyson 06.03.2019 16:24

Щелчок пользователя по календарю в нужное время, а затем в основном значение «var title» используется для отображения в моем календаре вместе с выбранным временем.

Trevor 06.03.2019 16:25

@Trevor, если вы не хотите, чтобы пользователь мог изменить заголовок, просто не спрашивайте их об этом. Кажется, вы не добавляете событие непосредственно в fullCalendar, а вместо этого отправляете его на сервер. Поэтому, если заголовок всегда должен быть адресом электронной почты, хранящимся в сеансе, то при запуске add_events.php просто выберите адрес электронной почты из сеанса в это время и используйте его в качестве заголовка при сохранении события в своей базе данных. Вам не нужно отправлять поле «название» в запросе ajax или просить пользователя ввести его.

ADyson 06.03.2019 16:35

@ADyson Хорошо, это имеет смысл. попробую так и сделать. Большое спасибо за вашу помощь, никогда ничего не делал с Ajax, так что это все новое. Ценить это!

Trevor 06.03.2019 16:39

@ Тревор, нет проблем. P.S. эта концепция не будет специфичной для ajax - то же самое будет применяться, если вы выполняете традиционную обратную передачу формы. Это больше связано с источником данных - в этом случае у вас уже есть правильные данные на сервере, поэтому нет необходимости снова запрашивать их у клиента, тем более что существует вероятность их изменения (законно или в противном случае) и привести к отправке неверных данных в вашу базу данных.

ADyson 06.03.2019 16:41

@ADyson Всякий раз, когда они нажимают на календарь, это когда им предлагается, и их ввод используется для отображения в календаре. Всякий раз, когда они нажимают на календарь, могу ли я просто подтвердить, чтобы убедиться, что это нужное им время, и если они подтвердят, он просто примет этот запрос и поместит их электронную почту в календарь?

Trevor 06.03.2019 16:42

@Trevor Ну, как ты добавляешь события в сам календарь? Вы используете renderEvent на стороне клиента или просто ждете завершения add_events, а затем запускаете refetchEvents? P.S. Я добавил ответ на ваш первоначальный основной вопрос ниже.

ADyson 06.03.2019 16:47

Мероприятие рендеринга @ADyson! и большое спасибо.

Trevor 06.03.2019 17:26

Без проблем. Если ответ помог вам, не забудьте отметить его как «принятый» (нажмите на галочку рядом с ответом, чтобы он стал зеленым) - спасибо :-)

ADyson 06.03.2019 17:45

Если вы используете eventRender напрямую, вы можете просто ввести значение электронной почты из сеанса в JS, например. var event = { title: "<?php echo $_SESSION["email"]; ?>", start: start, end: end }; тогда он фактически жестко закодирован (в этом небольшом примере предполагается, что начало и конец исходят из входных данных обратного вызова «выбрать» - я думаю, вы бы создали этот объект в обратном вызове «успех» вашего ajax, чтобы вы знали, что событие было успешно добавлено перед размещением в календаре).

ADyson 06.03.2019 17:47

@ADyson Определенно! Поскольку я новичок в stackoverflow и у меня нет репутации, он скрыт, но, безусловно, мой голос! Спасибо, я обязательно попробую это.

Trevor 06.03.2019 22:19

Вы не можете голосовать, пока у вас не будет немного больше репутации, но вы уже должны иметь возможность «принять» ответы, это два разных действия.

ADyson 06.03.2019 23:08

Понял тебя! Еще раз спасибо. @ADyson

Trevor 06.03.2019 23:46
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
17
138
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Итак, вы используете подсказку в качестве подтверждения? Вы должны использовать window.confirm('message')

var title = '<?php echo "{$_SESSION['email']}"; ?>';
var check = window.prompt('Confirm Email: ' + title);
if (check) {

}

но если это часть сеанса, почему вы просто не читаете его из сеанса на сервере?

Ответ принят как подходящий

Если вы не хотите, чтобы пользователь мог изменить заголовок, просто не просите его об этом. Кажется, вы не добавляете событие непосредственно в fullCalendar, а вместо этого отправляете его на сервер (и, предположительно, после этого вы заставляете fullCalendar повторно получать события с сервера, я бы предположил, хотя это не показано).

Поэтому, если заголовок всегда должен быть адресом электронной почты, хранящимся в сеансе, то при запуске add_events.php просто выберите адрес электронной почты из сеанса в это время и используйте его в качестве заголовка при сохранении события в своей базе данных. Вам не нужно отправлять поле «название» в запросе ajax или просить пользователя ввести его.

Фрагмент клиентского кода, который вы показали, может быть изменен на:

selectable: true,
selectHelper: true,
select: function(start, end, allDay) {

if (title) {
   var start = $.fullCalendar.formatDate(start, "Y-MM-DD HH:mm:ss");
   var end = $.fullCalendar.formatDate(end, "Y-MM-DD HH:mm:ss");
   $.ajax({
       url: 'add_events.php',
       data: 'start='+ start +'&end='+ end,
       type: "POST",
       success: function(json) {
       alert('Added Successfully');
       }
   });

Не видя кода на стороне сервера, я не могу конкретно посоветовать, но, вероятно, вы захотите сделать что-то, посредством чего теперь вы читаете поле «заголовок» из $_SESSION, а не из $_POST при сборе данных для записи в базу данных.

Другие вопросы по теме