使用.show()和.hide()功能的JavaScript/JQuery代码的故障排除
Troubleshooting of JavaScript/JQuery code with .show() and .hide() functionality
我正在构建一个网页,页眉和页脚保持不变,两个可选的元素组将在用户浏览网站时相互替换。网页正在用JavaScript
, JQuery
, Bootstrap
构建
这里是一个极其简化的index.html
和我的JavaScript
/JQuery
函数的确切副本:
<!DOCTYPE html>
<html>
<head>
<link href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<header>Header</header>
<div class="container">
<!-- if I remove the below form and just leave a stand-alone button
(no longer type="submit") it will work as expected by me -->
<form role="search">
<div class="form-group">
<input type="text" class="form-control" placeholder="Main text field" id="main_input">
</div>
<button type="submit" class="btn btn-default" id="main_search" onclick="OpenSearchScreen()">Switch to Search</button>
</form>
<div class="row" id="mainDiv">
<br/>
<p>We are in Main</p>
</div>
<div class="row" id="searchDiv" hidden>
<br/>
<p>We are in Search</p>
</div>
</div>
<footer>Footer</footer>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>
<script src="misc.js"></script>
</body>
</html>
// hides parts of Home screen
// shows Search screen
function OpenSearchScreen() {
// hide Main components
$("[id^='main']").hide();
// reveal Search components
$("[id^='search']").show();
}
// hides Search screen
// shows Home screen
function OpenHomeScreen() {
// hide Search components
$("[id^='search']").hide();
// reveal Main components
$("[id^='main']").show();
}
上面的HTML + JS
组合不工作:它短暂地显示Search
,然后恢复到Main
。
正如我在评论中指出的那样,如果我删除form
,只是放入一个常规(独立)button
,具有相同的onclick
设置,一切都如预期的那样工作:当我按下按钮Main
切换到Search
并保持原样。
我有以下两个问题/请求:
如果你知道为什么会这样,请告诉我。如果有一个想法如何可以修复/工作周围请与我分享。
如果你能建议我如何进一步解决这个问题,请做。我完全不知道如何继续,因为我似乎可以调试(通过Chrome开发工具)
JS
部分。一旦程序通过OpenSearchScreen
函数,然后退出form
元素,我就不能再跟踪它的进度。
你正在使用一个提交按钮,而不是阻止它的默认行为,这就是为什么它在提交表单,而你只在表单提交之前看到一瞬间的变化。
你可以这样写:
<button type="submit" class="btn btn-default" id="main_search" onclick="OpenSearchScreen(); return false;">
Switch to Search
</button>
jsFiddle这里
或者更好的是,删除所有的内联JS,并在外部处理。
相关文章:
- 对DataTable jquery进行排序,排除文本字段中的空白
- 非常奇怪的JS/jQuery行为-alert()包含/排除
- 使用下拉菜单排除jquery错误
- jQuery .not() 排除特定类的父类
- 使用 jQuery 创建可单击的行并排除子元素
- 从 jquery 中的滚动到动画中排除特定的 #
- 如何从jQuery中的函数中排除特定的标记
- jQuery输入值故障排除
- jQuery按数据值排除元素
- "如何使用jQuery's form.serialize但排除空字段"不起作用(使用php)
- jquery在通过ajax发送时将数据排除在对象之外
- jQuery:从 .text() 中排除子项
- 在 jquery UI 日期选取器中排除和禁用两个日期之间的差异中的假日
- Jquery 滚动函数排除可变高度
- 对使用 iframe 的简单 jquery 展开/折叠进行故障排除
- 排除 JQuery 轮播中的空白图像
- jQuery .hover 函数故障排除
- 对 jQuery 切换进行故障排除
- 如何排除jQuery复选框结果
- 排除jQuery事件中的兄弟事件