0

好的,我很确定我在这里遗漏了一些非常明显的东西,但到目前为止我找不到合适的解决方案。我想做的很简单:让用户在表单中写一些东西,让他提交表单,然后将该输入写入同一页面上的文本区域。

这是我的代码:

<html><head></head>
<body>
<form name='registration'>
<label for="input">Input:</label>
<input type="text" id="input"/>
<input type="submit" id="submit" value="Submit" onclick="execute()"/>
</form>

<div id="results">
<span>Result</span>
<span><textarea cols="30" rows="5" id="resulttext" readonly="readonly"></textarea> </span>
</div>

<script>
function execute()
{
    var result = document.getElementById("input").value

    document.getElementById("resulttext").value=result;
}
</script>

</body>
</html>

现在,如果我在表单中输入一些内容会发生什么,textarea 会在恢复为不显示任何内容之前短暂显示我的输入。我的猜测是 textarea 字段仅在 execute() 函数期间更改。

当我更改input type="submit"为 a时,<button>一切都按预期工作,但我很确定我不应该那样做。

4

2 回答 2

2

您需要取消提交按钮的默认事件,否则它只会提交表单(在这种情况下,本质上是重新加载页面,因为没有带有名称的表单元素)。添加return false;之后execute();在两部分之间添加一个)

于 2012-09-27T21:36:08.840 回答
1

因为你的按钮是 type submit,所以它会在执行execute()方法后提交你的表单。您可以将按钮类型更改为type="button",您将不会有此提交行为。

http://jsfiddle.net/PCCbh/

注意 -<button>在这种情况下使用是可以的。它本质上与<input type="button".

于 2012-09-27T21:39:39.337 回答