2012-09-27 26 views
0

好吧,我很确定我错过了一些非常明显的东西,但我到目前为止找不到合适的解决方案。我想要做的事情很简单:让用户在表单中写入内容,让他提交表单,然后将该输入写入同一页面上的textarea。使用输入类型=“提交”来更改内容

这是我的代码:

<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"更改为<button>时,一切都按预期工作,但我确信我不应该那样做。

回答

2

您需要取消提交按钮的默认事件,否则它只提交表单(在这种情况下基本上重新加载页面,因为没有名称的表单元素)。​​后加入return false;(把;在两片)

+0

他也可以使用

+0

这样做。谢谢!奇怪我没有在任何地方发现任何明确提到这一点的文档。 – Conti

+0

@DondiMichaelStroma'

1

因为你的按钮submit型的,它会执行​​方法后提交表单。您可以将按钮类型更改为type="button",并且您不会有此提交行为。

http://jsfiddle.net/PCCbh/

注 - 用<button>在这种情况下还行。它基本上与<input type="button"相同。