文本区域不读取任何输入

Textarea not reading any input

文本区域不读取输入框中的任何内容。最初,我使用 PHP 检查文本区域是否为空,并在那里收到错误。所以我删除了那个检查,看看是否是 php 导致了这个问题,并将 required="required" 属性添加到 textarea 标签,甚至 Please fill out this field. 也回来了我是不太确定我的代码哪里出错了,我以前让它工作,然后突然停止工作,我完全不明白为什么。我还查看了其他各种关于文本区域未提交的 post,并确保我检查的是 post 中的名称,而不是 ID;并确保文本区域提交到与提交按钮相同的表单。我也试过了,没有在 textarea 标签上指定表单。

HTML代码:

    <form action="" method="post" id="CreateTopicForm">
        <input type="hidden" name="create-topic" />
        <span class="secondary radius label"><strong>Title</strong></span>
        <input type="text" name="title" id="title" />

        <span class="secondary radius label"><strong>Message</strong></span>
        <textarea name="content" id="content" required="required" form="CreateTopicForm"></textarea>

        <?php if($_SESSION['user']['account_type'] >= 3): ?>
            <span class="secondary radius label"><strong>Sticky Topic</strong></span>
            <input type="checkbox" name="sticky" /><br />
        <?php endif ?>

        <input type="submit" value="Post Topic" class="topic-post" />
    </form>

PHP代码:

/* Retrieve necessary variables */

$fid = $_GET['fid'];

/* Get Forum Information */
$query = "SELECT * FROM bkg_forums where forum_id = :id";
$query_params = array(
':id' => $fid
);
try {
$stmt = $db->prepare($query);
$result = $stmt->execute($query_params);
} catch(PDOException $e) {
$error[] = $pdoerror;
}
$forum = $stmt->fetchAll();

/* Begin the database upload */

if(!empty($_POST)){ /* Plan to change to if($_REQUEST['submit']) */
/* Check if data was actually submitted */



$db->beginTransaction();

/* DO SOME ERROR CHECKING. MAKE SURE FIELDS ARE NOT EMPTY. */
    if(empty($_POST['title'])){
        $error[] = "Sorry! You must enter a title!";
    }
    /* Previously had a check if $_POST['content'] */

/* GENERATE SOME VARIABLES NEEDED TO INSERT INTO TABLES. ACCOUNT_TYPE IS TEMPORARY*/
    if($_SESSION['user']['account_type'] == 0) {
        $account_type = "Normal";
        $color = "white";
    } elseif($_SESSION['user']['account_type'] == 1) {
        $account_type = "Donator";
        $color = "#F4FA58";
    } elseif($_SESSION['user']['account_type'] == 2) {
        $account_type = "Moderator";
        $color = "#2EFE2E";
    } elseif($_SESSION['user']['account_type'] == 3) {
        $account_type = "Community Manager";
        $color = "#0000FF";
    } elseif($_SESSION['user']['account_type'] == 4) {
        $account_type = "Administrator";
        $color = "#DF0101";
    }
    if(isset($_POST['sticky'])){
        $sticky = 1;
    } else {
        $sticky = 0;
    }






if(!isset($error)){



/* INSERT INTO TOPICS TABLE */
    $query = "INSERT INTO bkg_topics (
            forum_id,
            icon_id,
            topic_approved,
            topic_title,
            topic_text,
            topic_poster_id,
            topic_poster,
            topic_poster_color,
            topic_post_time,
            topic_status,
            topic_type
        ) VALUES (
            :forumid,
            :iconid,
            :topicapproved,
            :topictitle,
            :topictext,
            :topicposter_id,
            :topicposter,
            :topicposter_color,
            :topicpost_time,
            :topicstatus,
            :topictype

        )";
    $query_params = array(
        ':forumid' => $fid,
        ':iconid' => 1,
        ':topicapproved' => 1,
        ':topictitle' => $_POST['title'],
        ':topictext' => $_POST['content'],
        ':topicposter_id' => $_SESSION['user']['id'],
        ':topicposter' => $_SESSION['user']['displayname'],
        ':topicposter_color' => $color,
        ':topicpost_time' => time(),
        ':topicstatus' => 0,
        ':topictype' => $sticky
    );

    $stmt = $db->prepare($query);
        $result = $stmt->execute($query_params);

        $lastid = $db->lastInsertId();
         /* Retrieve the last id of a topic, used to generate some links. */
        /* UPDATE FORUM TABLE */

    $query = "UPDATE bkg_forums SET
        `forum_last_post_id` = :lastpostid,
        `forum_last_post_topic_id` = :lastposttopicid,
        `forum_last_post_title` = :lastposttitle,
        `forum_last_poster_id` = :lastposterid,
        `forum_last_post_time` = :lastposttime,
        `forum_last_poster_name` = :lastpostername,
        `forum_last_poster_color` = :lastpostercolor
    WHERE `forum_id` = :forumid
    ";
    $query_params = array(
        ':lastpostid' => null,
        ':lastposttopicid' => $lastid,
        ':lastposttitle' => $_POST['title'],
        ':lastposterid' => $_SESSION['user']['id'],
        ':lastposttime' => time(),
        ':lastpostername' => $_SESSION['user']['displayname'],
        ':lastpostercolor' => $color,
        ':forumid' => $fid
    );

    $stmt = $db->prepare($query);
    $result = $stmt->execute($query_params);

    if($fid == 13){
        $query = "INSERT INTO updates (
            title,
            content,
            `date`,
            `user`,
            `topic_id`
        ) VALUES (
            :title,
            :content,
            :date_posted,
            :user_posted,
            :topic_id
        )";
        $query_params = array(
            ':title' => $_POST['title'],
            ':content' => $_POST['content'],
            ':date_posted' => time(),
            ':user_posted' => $_SESSION['user']['displayname'],
            ':topic_id' => $lastid
        );
        $stmt = $db->prepare($query);
        $result = $stmt->execute($query_params);
    }


    try {
        $db->commit();
        $post_ok = 1;
    } catch(PDOException $e) {
        $erroradmin[] = $e->getMessage();
        $db->rollback();
    }
    if(isset($post_ok)): ?>
        <script>
            location.href = "http://www.boundlessknights.com?viewtopic&fid=<?php echo $fid; ?>&tid=<?php echo $lastid; ?>";
        </script>
    <?php else: ?>
        <?php $error[] = "Your topic did not post."; ?>
    <?php endif; ?>
    <?php 
}
}
?>

我看过的问题:

Cannot Get the Value of a Textarea via Post Method

Textarea Not Posting with Form

嗯,您是否尝试从您的 Textarea 中删除此 "form" 属性?

<textarea name="content" id="content" required></textarea>

告诉我们当你尝试时它做了什么。

您可能无法post任何操作,因为您指定表单的action属性。

<form action="" method="post" id="CreateTopicForm">

将其设置为 php 文件的名称(使用正确的文件路径), 它应该可以工作。

注意: 要确保 $_POST 数组包含您提交的表单值,请执行 var_dump($_POST).

改变这个

 <textarea name="content" id="content" required="required" form="CreateTopicForm"></textarea>

至此

  <textarea name="content" id="content" required="required" ></textarea>

您的页面正在使用 TinyMCE 编辑器。它在控制台中出现以下错误:An invalid form control with name='content' is not focusable. 解决这个问题将解决您的问题。

TinyMCE 不会始终保持底层 textarea 同步。通常,当您 post 表单时,TinyMCE 会在表单被 posted 之前更新 textarea,但该过程似乎被 required 属性停止了。您可以使用以下 API 调用来强制 TinyMCE 更新文本区域:

tinymce.triggerSave();

这将强制 TinyMCE 在调用时更新 textarea。您可以:

  • 在表单的 onsubmit 事件中执行此操作
  • 在 TinyMCE 初始化中执行此操作:

    tinymce.init({
        selector: "textarea",
        setup: function (editor) {
            editor.on('change', function () {
                tinymce.triggerSave();
            });
        }
    });