【问题标题】:html - Get wrapped text from textareahtml - 从 textarea 获取包装的文本
【发布时间】:2012-05-13 02:28:58
【问题描述】:

我试图在不进行任何服务器调用的情况下从文本区域获取换行符。 This answer 让我走了 90% 的路。问题是每次单击提交按钮时页面都会在 iframe 内重新加载。代码如下:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<html>

<body>
  <script type="text/javascript">
    function getURLParameter(qs, name) {
      var pattern = "[\\?&]" + name + "=([^&#]*)";
      var regex = new RegExp(pattern);
      var res = regex.exec(qs);
      if (res == null)
        return "";
      else
        return res[1];
    }

    function getHardWrappedText() {
      var frm_url = document.getElementById('frame').contentDocument.URL;
      var text = unescape(getURLParameter(document.getElementById('frame').contentDocument.URL, 'text')).replace(/\+/g, ' ');
      return text;
    }

    function onIFrameLoad() {
      var text = getHardWrappedText();
      console.log(text);
    }

    window.onload = function() {
      console.log("loading")
    };
  </script>
  <form name="form" method="get" target="frame">
    <textarea id="text" name="text" cols=5 wrap="hard">a b c d e f</textarea>
    <input type="submit">
  </form>
  <iframe id="frame" name="frame" onload="onIFrameLoad()" style="display:none;"></iframe>
</body>

</html>

点击提交按钮给出输出:

loading
a b c d e 
f

有没有办法防止 iframe 重新加载页面?

【问题讨论】:

    标签: javascript html iframe textarea


    【解决方案1】:

    您必须向表单的 onsubmit 事件返回 false。

    &lt;form name="form" method="get" target="frame" onsubmit="onIFrameLoad"&gt;

    如果它基于某些您不想加载的条件

    function onIFrameLoad() {
        var text = getHardWrappedText();
        console.log(text);
        if(text.indexOf('\n')<0) return false;
    }
    

    我只是在text.indexOf('\n')&lt;0 放了一个随机的东西,你可以有任何有意义的东西或总是返回 false(这看起来不太可能)

    【讨论】:

    • 我总是希望提交表单,而不是重新加载整个页面。是否可以创建一个空的 iframe?
    • 要提交内容并且没有视觉指示,您可以定义一个非常小的 iframe (1x1),因为 display:none 在 iframe 上效果不佳。不过,如果目的是在后台提交某些内容,我建议使用 AJAX。
    • 我不担心内容显示(display:none; 处理得很好)。我不想重新运行window.onload 中的逻辑。这有意义吗?
    猜你喜欢
    • 1970-01-01
    • 2019-08-22
    • 2011-08-08
    • 1970-01-01
    • 2017-11-03
    • 2010-09-13
    • 1970-01-01
    • 2017-02-27
    相关资源
    最近更新 更多