1

サーバー呼び出しを行わずに、テキストエリアから折り返された改行を取得しようとしています。この答えは、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 がページをリロードしないようにする方法はありますか?

4

1 に答える 1

0

フォームのonsubmitイベントにfalseを返す必要があります。

<form name="form" method="get" target="frame" onsubmit="onIFrameLoad">

ロードしたくない条件に基づいている場合

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

ランダムなものをに置くだけでtext.indexOf('\n')<0、意味のあるもの、または常にfalseを返すものを使用できます(これはありそうもないように見えます)

于 2012-05-13T02:41:11.733 に答える