HTML/Javascript 显示用户输入(刷新问题)

Posted

技术标签:

【中文标题】HTML/Javascript 显示用户输入(刷新问题)【英文标题】:HTML/Javascript Display User input (Refresh Issue) 【发布时间】:2015-12-16 22:49:44 【问题描述】:

我正在尝试获取用户在文本框中输入的内容,然后编写 该输入到页面上的段落,并停止页面刷新,以便他们可以复制该输入以在其他地方使用。 (这将是一个相当长的形式,但这是我遇到的一个绊脚石 --为清楚起见进行了编辑--

一切似乎都运行良好,除了当我输入输入并按下 提交,输入显示正常几秒钟,然后 页面刷新。有什么办法可以解决/阻止这个问题?

我尝试在显示中添加一个 while 循环,以便代码在显示时停止,但到目前为止还没有成功。

任何指点将不胜感激,谢谢。

我的代码

<html>
<head>
<script type="text/javascript">
    function checkForm() 
        var input = document.myForm.username.value;
            document.write.getElementById("display").innerHTML=("Your username is" + " " + input);
            


    </script>
</head>

<body>

<form name="myForm">
    <input type="text" name="username" value="Enter username" /><br/>
    <input type ="submit" value="Submit" 
    onClick="checkForm()" />

</form> 

<span id="display"><p> </p> </span>

</body>
</html>

【问题讨论】:

表单提交......这就是表单的作用。 【参考方案1】:

我知道你对编程很陌生

所以

如果您的提交标签在表单标签中,它将转到表单动作属性路径,如果您没有动作属性,它将刷新;因为它将有“”路径,这意味着它是当前路径

例如当你的代码是这样的

<form action="">
    <input type="submit">
</form>

但如果您的 提交标签不在表单标签中,提交标签将像简单的按钮标签一样工作。

<div>
    <input type="submit">
</div>

在这种情况下,您可以将它用于类似按钮的 JavaScript。

但是如果你在你的 onclick 函数中写 return false 它将切断你的提交过程并且它也可以在表单标签中工作。

所以我会帮你写代码

function output()
    var text=document.getElementById("text");
    var value=text.value
    var outputDiv=document.getElementById("output")
    
    outputDiv.innerText=value
#output
   height:50px;
   margin-bottom:25px;
   border:1px solid gold;
<div id="output"></div>

<input type="text" id="text">
<input type="submit" id="submit" onclick="output()">

最好的问候

【讨论】:

【参考方案2】:

没有document.write....

document.write.getElementById(...

应该是

document.getElementById(...

并且你需要取消表单提交。

document.forms[0].addEventListener("submit", function(evt)  evt.preventDefault(); );  

这需要附加在文档就绪或窗口加载中。

其他选项是使用

<form onsubmit="return false">

【讨论】:

非常感谢,问题解决了。我意识到其他人也提到了返回 false,我把它作为函数的一部分,但它似乎不想玩得很好。所以感谢大家的帮助和反馈!【参考方案3】:

伙计,在提交按钮上,它默认提交导致页面刷新的表单,您需要在 checkForm() 结束时返回 false;或者最后调用 e.preventdefault() ;

【讨论】:

【参考方案4】:

您的函数还需要将 false 返回到 html 表单:

function checkForm() 
    var input = document.myForm.username.value;
    document.write.getElementById("display").innerHTML=("Your username is" + " " + input);
    return false;

您可能还应该使用表单本身的 onsubmit 事件,而不是提交按钮上的 onclick

【讨论】:

嗨。感谢您的反馈。我知道我错过了一些非常明显的东西。我尝试添加return false,并删除了onclick并将表单更改为onsubmit,但它仍然存在刷新问题。我对此还是很陌生,我正在努力弄清楚我错过了什么哈哈。

以上是关于HTML/Javascript 显示用户输入(刷新问题)的主要内容,如果未能解决你的问题,请参考以下文章

在后台刷新 vb6 表单而不会丢失用户输入的数据

如何在HTML / Javascript中创建可编辑的组合框?

刷新时如何防止重复条目?

如何在 HTML/Javascript 中创建可编辑的组合框?

如何在不刷新页面的情况下显示错误?

让用户选择在文本区域中显示多少行 [HTML] [JAVASCRIPT?]