将提示设置为只读

Setting Prompt to Read Only

我正在设置一个等于提示输入的变量,然后将其传递并用于显示在我的页面上。但是,我不认为 prompt 是我需要使用的,但我不知道该怎么做。基本上一旦它提示他们,提示框中已经有他们的电子邮件,这就是我想要的,但我不希望他们能够更改字段以避免输入与他们的会话设置不同的电子邮件.有什么建议吗?我的代码如下。

    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');
       }
   });

所以你用提示作为确认?你应该使用 window.confirm('message')

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

}

但如果它是会话的一部分,为什么不直接从服务器上的会话中读取它呢?

如果您不希望用户能够修改标题,那么就不要询问他们。似乎您没有将事件直接添加到 fullCalendar 中,而是将其发送到服务器(我想可能是在这之后您导致 fullCalendar re-fetch 来自服务器的事件,尽管它没有显示)。

所以如果标题必须始终是session中存储的电子邮件,那么当add_events.php运行时,只需从session中选择电子邮件,然后使用将事件保存到数据库时将其作为标题。您不必费心在 ajax 请求中发送 "title" 字段,或要求用户输入它。

您显示的 client-side 代码片段可以修改为:

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');
       }
   });

在没有看到 server-side 代码的情况下,我无法给出具体的建议,但您可能想要做一些事情,从而在收集要写入数据库的数据。