javascript表单动作changerc方法发布文本输入onsubmit

时间:2012-08-18 22:53:01

标签: javascript html forms

我只是尝试将表单的文本输入发布到带有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>

没有任何影响或降级,我知道这段代码很糟糕......

感谢

2 个答案:

答案 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/