<form>导致我的JavaScript代码出现问题
<form> is causing problems with my JavaScript code
我已经将我的代码简化到一个非常基本的级别,试图弄清楚为什么当我向任何包含Javascript的HTML页面添加表单时,页面呈现两次:一次使用JavaScript,一次不使用JavaScript,让我回到起点。
这是简单的 HTML:
<form action="test.php" method="post">
<div class="section">
<fieldset>
<p id="myP"></p>
<button type='submit' name='NewClassTypes' value='NewClassTypes' id='save_button'>Save</button>
</fieldset>
</div> <!-- ends section -->
</form>
<script type="text/javascript" src="inc/js/scripts.js"></script>
所以我只有一个空段落和一个保存按钮。
然后我有这个Javascript代码,当单击"保存"按钮时,它只是简单地将"Hello world!"写入段落元素:
var saveButton = document.getElementById("save_button"); // Save button
var displaySomeText = function () {
var myParagraph = document.getElementById("myP");
myParagraph.textContent = "Hello World!";
}
saveButton.onclick = displaySomeText;
问题是,当我单击"保存"按钮时,"Hello world!"会显示一秒钟,然后消失。
但是如果我删除 FORM 元素,它可以正常工作。
知道为什么会发生这种情况吗?
在实际代码中,我需要将数据提交到数据库,我希望能够使用_POST
从所有输入中获取所需的数据。
原因是,单击submit
按钮后,它会"提交"表单。尝试更改按钮的type="button"
,这不会发生:
<!------vvvvvvvvvvvvv Change this!!! -->
<button type='button' name='NewClassTypes'
value='NewClassTypes' id='save_button'>Save</button>
否则,您需要在函数中提供return false
。这也行得通:
var displaySomeText = function () {
var myParagraph = document.getElementById("myP");
myParagraph.textContent = "Hello World!";
return false; // Add this!
}
submit
按钮类型具有特殊功能:它使浏览器提交表单。在其上放置单击处理程序并不能阻止这种情况的发生。因此,结果是预期的。
为了不提交表单,您需要更改按钮类型:
<input type='button' name='NewClassTypes' value='NewClassTypes' id='save_button'>Save</button>
在这种情况下,窗体的 action
属性和method
都没有意义 - 它们都没有使用。
您可能会发现在解决此类问题时使用 jQuery 更容易。
$('#save_button').on('click', function(e){
e.preventDefault(); // don't submit the form as usual.
$('#myP').text('Hello World!');
});
相关文章:
- JavaScript代码问题:我正在将对象转换为数组
- 简单的Javascript代码问题
- 如果调试器关闭,Internet Explorer将出现运行代码问题
- AJAX自定义错误处理代码问题
- 花式盒子代码问题
- 谷歌分析事件跟踪代码问题
- 面临使用 javascript 的代码问题
- HTML页面头部出现Javascript代码问题
- JavaScript中的未来日期代码问题
- JavaScript代码问题
- js警报框中的资源文件变量给出字符串ASCII代码问题
- JQuery隐藏列表项超过5个代码问题
- AngularJS和JSON的代码问题
- Javascript代码问题"和& # 39;
- 验证代码问题
- 解析云代码问题中的条带模块
- SVG嵌入到HTML中,拖放代码问题
- 更新面板中的中继器- itemcommand代码问题-调用javascript函数与ScriptManager在代码后面
- Owl Carousel: Javascript不加载.Shopify问题或代码问题
- 从JSFiddle复制代码问题