如何停止随机生成的数字从刷新表单提交
How to stop randomly generated number from refreshing on form submit?
我创造了一个猜测数字的游戏。我目前的问题是,每次我点击猜测按钮,数字刷新自己!我怎样才能阻止这一切的发生?我已经努力了一段时间了,但没有运气,我仍然是javascript的新手。如果你能解释一下我做错了什么,我将非常感激,因为目前我不明白为什么会这样。
<form id='sampleform' method='get' action=''>
Guess: <input type='text' name='guess' id = 'guess'/>
<button id ='b1' name='Submit' value='Submit'/>
</form>
<script>
document.getElementById("b1").addEventListener("click", checkForm);
x = Math.floor(Math.random()*99)
function randomNumber(){
return x;
}
function checkForm(){
var number = document.getElementById('guess').value;
if (number == null || number == "" || isNaN(number) || number < 0 || number > 99){
alert("Invalid input");
return false;
}
else if (number == x)
{
alert("You're correct!");
document.getElementById('b1').disabled = true;
return true;
}
else{
alert("Wrong! Try again.")
}
}
randomNumber();
console.log(x); //checks value for testing
</script>
您可以通过使用Event.preventDefault()
:
submit
事件来解决此问题document.getElementById("sampleform").addEventListener("submit", function(event){
event.preventDefault();
});
正如墨卡托所指出的,如果你为你的action
属性使用一个空字符串,它将使用文档的地址,并在进一步的后果中重新加载你的脚本。
假设您想将表单提交给服务器。
您可以生成一个值并将其存储在浏览器的localStorage中,如果该值已经定义,则使用该值。
if (localStorage['random-number']) {
x = parseInt(localStorage['random-number']);
} else {
x = Math.floor(Math.random() * 99);
localStorage['random-number'] = x;
}
嗯,我在这里看到不同的东西,所以我会尽可能清楚地解释每一点。
首先:
<button id ='b1' name='Submit' value='Submit'/>
你没有为按钮指定类型("submit", "button"或"reset")。默认情况下(取决于浏览器),该类型将被设置为"提交",它将当前表单发送到"action"属性中设置的url,因此需要重新计算隐藏数。顺便说一下,如果你在javascript代码中通过id选择按钮,你不需要为按钮设置名称。
因此,设置type="button"使您有机会在不触发任何其他事件的情况下设置按钮的行为。
第二:
Ok,现在按钮没有提交表单,号码也没有刷新,但是…如果用户输入一个数字并按回车键呢?表格已张贴。
好吧,你有两种方法来解决这个问题:你禁用提交事件或不使用表单,因为你做的一切都通过Javascript。如果你真的想使用表单,你必须考虑"onsubmit"事件。
最后,我给你两种方法来解决这个问题:
1)使用表单处理onsubmit事件:http://jsfiddle.net/q620qaun/
2)不使用表单,使用虚拟按钮:http://jsfiddle.net/019xL737/1/
希望有帮助!好运!
- 强制模板刷新ember.js
- 如何通过ajax刷新JSF填充的javascript变量
- 通过单击表单中的按钮,在代码生成中使用javascript生成字母数字代码
- 测试索引值是否等于某个数字的倍数
- 将数字转换为一定数量的硬币
- 键入最后一位数字后自动提交
- 如何在javascript中迭代数字列表
- 如何解决Yii中的页面刷新问题
- Javascript逻辑运算符和字符串/数字
- 如何在javascript中获得与特定数字相等的随机数
- Jquery提交表单而不刷新
- 如果元素's的ID以数字开头
- 刷新页面后会出现警报
- 刷新后保留对网页的更改
- 在通过函数将数字转换为日期并加载刷新更多数据中
- 存储和增加数字,即使在刷新页面后
- 等到未知数字$.Get都完成了,然后刷新页面
- 如何停止随机生成的数字从刷新表单提交
- 在页面刷新时以正确的数字启动字符计数器
- 计算在页面刷新时没有丢失的数字