0

フォームのテキスト入力を iframe に投稿しようとしていますが、送信ボタンはありません。

function changesrc(main, url) {
document.getElementById('main').setAttribute('src', url);
}

私のメインのiframe

<div id="frame"><iframe id="main" name="main" type="text/html" src="" frameborder="0" allowtransparency="true"></iframe>

実際のテキスト入力の親フォームが私を悩ませているものです...

<form id="url" onSubmit='changesrc('main', target)' method="post"><div id=target><input type="text" name="target" id="target" size="65"></div></form>

plsは影響や劣化はありません。私はこのコードがお粗末であることを知っています...

ありがとう

4

2 に答える 2

1

投稿したコードには明らかな問題がいくつかあります。

function changesrc(main, url) {
    document.getElementById('main').setAttribute('src', url);
}

また、要素のにアクセスするsrcには、mainドット表記を使用するだけで、次のようになります。

function changesrc(main, url) {
    document.getElementById(main).src = url;
}

上記の関数では、関数に提供された引数を、document.getElementById() または文字列(現在のように)の文字列として使用する必要がありますが、引数を渡す場合は、おそらくそれを使用する必要があります(そうでない場合は意味がありません)。

<form id="url" action='changesrc('main', target)' method="post">
    <div id=target>
        <input type="text" name="target" id="target" size="65"></div>
    </form>
</div>

これでは、同じ文字列区切り文字を使用して、文字列内の文字列を引用しようとしました。この問題を回避するには、二重引用符で区切られた文字列内で一重引用符を使用する必要があります。

<form id="url" action="changesrc('main', target)" method="post">

または、一重引用符で区切られた文字列を二重引用符で囲みます。

<form id="url" action='changesrc("main", target)' method="post">

このaction属性は、サーバー側スクリプトなど、フォームデータの送信先を指定するために使用されます。クライアント側のイベント処理用ではありません。インラインイベント処理を使用する必要がある場合は、onkeypressイベントハンドラーを使用する必要があります。

<form id="url" onkeypress="changesrc('main', target)" method="post">
于 2012-08-18T23:51:16.620 に答える
0

コードを確認してください:

<form id="url" action='changesrc('main', target)' method="post"><div id=target><input type="text" name="target" id="target" size="65"></div></form>

あなたが持っていaction='changesrc('main', target)'ます。属性は二重引用符で囲む必要がaction="changesrc('main', target)"あるため、そうする必要があります。一重引用符で囲む必要がある場合は、他の一重引用符をエスケープする必要があります。

ただし、target属性はフォームの送信先のファイルです。changesrcフォームが送信されているときに実行したいので、それはonsubmit="changesrc('main',target)"です。

しかし、それから私たちは持っていonsubmit="changesrc('main', target)"ます。ただし、未定義の変数の代わりにtarget、入力の値が必要ですid="target"。次に、onsubmit="changesrc('main', document.getElementById('target').value)"です。しかし、その関数を呼び出した後、フォームをサーバーに送信したくないと思うので、onsubmit="changesrc('main',document.getElementById('target').value);return false;"

しかし、問題は、で2つの要素があることですid="target"。したがって、から削除し<div>ます。

次に、あなたは

function changesrc(main, url) {
    document.getElementById('main').setAttribute('src', url);
}

まあ、それは動作しますが、パラメータを使用していませんmain。私はあなたが欲しいと思います

function changesrc(main, url) {
    document.getElementById(main).setAttribute('src', url);
}

最終的なコードは次のとおりです。

HTML:

<form id="url" onsubmit="changesrc('main',document.getElementById('target').value);return false;" method="post">
    <div>
        <input type="text" name="target" id="target" size="65">
    </div>
</form>

<div id="frame">
    <iframe id="main" name="main" type="text/html" src="" frameborder="0" allowtransparency="true"></iframe>
</div>

JavaScript:

function changesrc(main, url) {
    document.getElementById(main).setAttribute('src', url);
}

あなたはここでそれを見ることができます:http://jsfiddle.net/UsGJb/

于 2012-08-18T23:54:06.443 に答える