我只是尝试将表单的文本输入发布到带有return,no submit按钮的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>
没有任何影响或降级,我知道这段代码很糟糕......
感谢
答案 0 :(得分: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">
答案 1 :(得分: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;"
但问题是你有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/