我怎样才能防止这种“点击”发生不止一次
How can I keep this "onclick" from happening more than once?
我正在尝试有一个按钮,单击该按钮时会打开一个区域以键入消息。我在 HTML 中使用"onclick",我希望它只能点击一次。我不希望它在您单击它时继续制作更多的文本区域。
我在调用函数的 onclick 之后有一个 this.onclick="null"。这一直有效,直到我添加提交按钮。
所以这段代码有效:
.HTML:
<html>
<head>
<script type="text/javascript" src="js/question.js"></script>
<style type="text/css">
#container {
position: absolute;
height: 443px;
width: 743px;
border: 1px solid black;
border-radius: 0 0 20px 0;
margin-top: 75px;
}
</style>
</head>
<body>
<div id="container"></div>
<button id="new_message" onclick="createMessage(), this.onclick=null;">New Message</button>
</body>
</html>
Javascript:
function createMessage() {
var form = document.createElement("form");
form.name = "form_input";
form.method = "POST";
form.action = "messages.php";
container.appendChild(form);
var textarea = document.createElement("textarea");
textarea.name = "message_input";
textarea.cols = 84;
textarea.rows = 16;
textarea.id = "message_input";
container.appendChild(textarea);
};
但是当我保持 HTML 不变并将提交按钮添加到 javascript 中时,如下所示:
function createMessage() {
var form = document.createElement("form");
form.name = "form_input";
form.method = "POST";
form.action = "messages.php";
container.appendChild(form);
var textarea = document.createElement("textarea");
textarea.name = "message_input";
textarea.cols = 84;
textarea.rows = 16;
textarea.id = "message_input";
container.appendChild(textarea);
var submit = document.createElement("button");
submit.innerHTML = 'Send';
submit.id = 'send_message';
container.appendChild(submit);
submit.onClick(messageAjax());
};
它再次开始复制。有什么办法可以防止这种快乐吗?
感谢您的帮助!
这是因为您的代码包含错误:
submit.onClick(messageAjax());
该属性为 onclick
,小写。 onClick
不存在并引发错误。这可以防止按钮清除其自己的onclick
,因为错误会导致脚本停止。
我不完全确定上面的行应该是什么。它似乎在调用messageAjax
,然后立即将该函数的参数传递给submit.onClick
...你也许是这个意思?
submit.onclick = messageAjax;
也许:
(function() {
var open = false;
function createMessage() {
if( open ) return;
var form = document.createElement("form");
form.name = "form_input";
form.method = "POST";
form.action = "messages.php";
container.appendChild(form);
var textarea = document.createElement("textarea");
textarea.name = "message_input";
textarea.cols = 84;
textarea.rows = 16;
textarea.id = "message_input";
container.appendChild(textarea);
var submit = document.createElement("button");
submit.innerHTML = 'Send';
submit.id = 'send_message';
container.appendChild(submit);
submit.onClick(messageAjax());
open = true;
};
})();
闭包避免了与 window.open() 的名称冲突。你可以用不同的方式命名它,但它只是为了让你知道它。
相关文章:
- 当点击另一件事时,将焦点设置为一件事
- 一次点击,两次'单击'事件已启动
- KnockoutJS绑定每个文档不止一次
- 控制不止一次跳水的风格's风格使用java脚本动态,使用类
- HTML5<音频>:点击下一首歌曲时停止加载/缓冲
- 如何使用javascript点击最后一个子链接
- 随机图像显示不止一次
- 我怎样才能防止这种“点击”发生不止一次
- 如何使用Jquery/JavaScript使此图像滑块在单击时滑动不止一次
- 触发setInterval在点击发生一次
- 触发点击不止一次
- 为什么在多次启动$.click()时,如果链接被单击一次,它会捕获它不止一次
- 一次点击保存多次
- 在点击“下一步”和“上一步”时,任何数量的“里”只移动1次
- Javascript/JQuery-点击时一次突出显示一个链接
- 如何播放一个声音不止一次的按钮点击
- 点击里面的点击功能导致警告信息显示不止一次- Jquery/Javascript
- jQuery点击事件一次点击触发多次
- jQuery运行点击函数一次,尽管相同的选择器
- jQuery点击运行一次