【问题标题】:Setting a minimum length for textarea设置文本区域的最小长度
【发布时间】:2011-05-11 14:37:47
【问题描述】:

如果用户没有在 textarea 中输入足够的数据,我正在尝试使我的 wordpress 网站上的这个评论表单无法提交。

我为标题写了这个

<script>
function CheckLength()
{
var msg_area = document.getElementById("Message");
msg_area.innerHTML = "";
if (document.getElementById("commentarea").value.length < 100) {
msg_area.innerHTML = "YOU DID NOT ENTER ENOUGH INFO FOR YOUR REVIEW";
}
else document.getElementById("commentform").submit();
}
</script>

我的表格是这样的

<form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" name="commentform" id="commentform">


           <p><input size="36" type="text" name="author" /> Name <span class="required">*</span></p>
            <p><input size="36" type="text" name="email" /> Email <span class="required">*</span> (Not Published)</p>
            <p><input size="36" type="text" name="url" /> Website</p>
            <p><input size="36" type="text" name="server_ip" id="server_ip" /> Server IP/Hostname</p>
            <p><?php show_subscription_checkbox(); ?></p>     

            <p><textarea name="comment" id="commentarea" cols="100%" rows="20"></textarea></p>

        <p align="right"><input type="button" name="submit" id="submit" value="Submit Review" tabindex="5" onClick="CheckLength()"></p>
        <span id="Message" style="color:#ff0000"></span>


    <input type="hidden" name="comment_post_ID" value="<?php echo $id; ?>" />

    <?php /* do_action('comment_form', $post->ID); */ ?>
        </form>

如果我输入的字符少于 100 个字符,表单会显示错误“您没有输入足够的信息供您查看”,但如果我输入的字符多于 100 个字符,则表单不会提交。如果我更改输入类型以提交它确实提交,但如果 没关系

【问题讨论】:

    标签: textarea minimum


    【解决方案1】:

    更改输入按钮的名称。

    我使用您的标记时遇到的错误是提交不是一个函数,因为它认为我指的是提交按钮。以下应该有效:

    <input type="button" name="submitbtn" id="submitbtn" value="Submit Review" tabindex="5" onClick="CheckLength()">
    

    【讨论】:

      【解决方案2】:

      你能做到吗?

      将检查放在表单的“onsubmit”事件中:

      <form action="wp-comments-post.php" onsubmit="return CheckLength();" method="post" name="commentform" id="commentform">
      

      您必须更新您的函数以返回布尔值:

      <script type="text/javascript">
      
      function CheckLength()
      {
          var msg_area = document.getElementById("Message");
          msg_area.innerHTML = "";
          if (document.getElementById("commentarea").value.length < 100) {
              msg_area.innerHTML = "YOU DID NOT ENTER ENOUGH INFO FOR YOUR REVIEW";
              return false;
          }
          return true;
      }
      </script>
      

      然后从您的提交按钮中删除 onclick 事件。

      【讨论】:

      • 将支票添加到表单而不是提交会有什么输出?
      • 我认为你所做的是不好的做法。通过在您的 JS 中调用 document.getElementById("commentform").submit();,您可以绕过提交按钮的 onclick 事件。如果您想以编程方式提交表单,我的解决方案将允许您使用该 JS 行,同时仍然满足您的最小长度要求。
      • 更好的例子。谢谢@Cory
      【解决方案3】:

      你可以试试这个吗?

      <script>
      function CheckLength()
      {
          var msg_area = document.getElementById("Message");
          msg_area.innerHTML = "";
          if (document.getElementById("commentarea").value.length < 100)
          {
              msg_area.innerHTML = "YOU DID NOT ENTER ENOUGH INFO FOR YOUR REVIEW";
              return false;
          }
          else
          {
              document.getElementById("commentform").submit();
              return true;
          }
      }
      </script>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多