2012-05-13 8 views
1

私は、サーバーコールを行うことなく、テキストエリアから折り返し改行を取得しようとしています。 This answerは私にその道の90%を与えます。問題は、送信ボタンをクリックするたびにiframeの内部でページが再読み込みされることです。ここでは、コードがあります:送信ボタンをhtml - textareaからラップされたテキストを取得する

<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> 

クリックすると、出力が得られます。

loading 
a b c d e 
f 

は、ページをリロードからのiframeを防止する方法はありますか?

答えて

0

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

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

それはあなただけtext.indexOf('\n')<0でランダムなものを入れて

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

アムをロードしないことを、いくつかの条件に基づいている場合、あなたは理にかなっているか、常にfalseを返す何かを持つことができます(そう思わない)

+0

私はいつもフォームを提出したい、ちょうどページ全体がリロードされていない。空のiframeを作成する場所はありますか? – user1391697

+0

「display:none」がiframeでうまく動作しないため、何かを提出して視覚的な指示がない場合は、非常に小さいiframe(1x1)を定義できます。私はAJAXを使用することをお勧めしますが、目的が何かをバックグラウンドで提出することであれば。 – fozylet

+0

私はコンテンツの表示について心配していません( 'display:none;'は大丈夫です)。私は 'window.onload'でロジックを再実行したくありません。それは理にかなっていますか? – user1391697

関連する問題