javascript - 使用 jQuery 隐藏/显示功能时,表单提交按钮不起作用

标签 javascript jquery html css forms

我有表单,用户可以使用 jQuery 显示/隐藏它。

问题:用户单击显示/隐藏(箭头图标)后,表单提交将仅运行一次。我的意思是,当我单击表单提交按钮之后,该按钮不起作用。

我发现的内容:URL 中似乎有“#”与此问题相关。

如何解决这个问题?

Jsfiddle:https://jsfiddle.net/damithruwan1234/t795ewx3/2/ (你不能由此测试它,因为 jsfiddle 不允许 get 方法)

完整代码:

<!DOCTYPE html>
<html lang="en">
<head>
  <title>Bootstrap Example</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>

  <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">

  <script>
$(document).ready(function(){

$("#hide_search").click(function(){
  $("#search_panel").hide(1000);
    $("#show_search").show();
    $("#hide_search").hide();
});

$("#show_search").click(function(){
  $("#search_panel").show(1000);
    $("#show_search").hide();
    $("#hide_search").show();
});
});
</script>


</head>
<body>

<div class="container">
  <h2>Vertical (basic) form</h2>
  <div class="col-sm-8 col-sm-offset-2" id="search_panel">
  <form action="">
    <div class="form-group">
      <label for="email">Email:</label>
      <input type="text" class="form-control" id="email" value="dfdf" placeholder="Enter email" name="email">
    </div>
    <div class="form-group">
      <label for="pwd">Password:</label>
      <input type="text" class="form-control" id="pwd" value="ssds" placeholder="Enter password" name="pwd">
    </div>
    <div class="checkbox">
      <label><input type="checkbox" name="remember"> Remember me</label>
    </div>
    <input type="submit" class="btn btn-info" value="SEARCH">
  </form>
  </div>
</div>

<div class="col-sm-8 col-sm-offset-2">
 <a href="#" id="hide_search">
 <span class="fa-stack fa-lg">
  <i class="fa fa-circle fa-stack-2x"></i>
  <i class="fa fa fa-angle-up fa-stack-1x fa-inverse"></i>
</span>
</a>

 <a href="#" id="show_search" style="display: none;">
 <span class="fa-stack fa-lg">
  <i class="fa fa-circle fa-stack-2x"></i>
  <i class="fa fa fa-angle-down fa-stack-1x fa-inverse"></i>
</span>
</a>
 </div>

</body>
</html>

最佳答案

在隐藏/显示点击事件上添加preventDefault()。使用以下修改后的脚本。 (实际问题是,当您单击隐藏/显示按钮时,它会在 URL 上添加“#”,这就是为什么无法使用“获取”方法提交表单的原因)

$("#hide_search").click(function(e){
e.preventDefault();
  $("#search_panel").hide(1000);
    $("#show_search").show();
    $("#hide_search").hide();
});

$("#show_search").click(function(e){
e.preventDefault();
  $("#search_panel").show(1000);
    $("#show_search").hide();
    $("#hide_search").show();
});

关于javascript - 使用 jQuery 隐藏/显示功能时,表单提交按钮不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45689454/

相关文章:

html - 如何实现倾斜的右边缘 div?

JavaScript focus() 函数不会将文本区域集中在页面加载上

javascript - 访问 for 循环的索引产生 'undefined' 结果

javascript - ngresource 访问属性资源时出错

javascript - React 使用状态来显示,否则隐藏

javascript - 将来自 2 个 AJAX 调用的数据合并到一个数组中?

javascript - jQuery Scrollify - 第一部分忽略偏移量

javascript - jQuery - 使用嵌套在选项组中的选项的值或文本设置选择框的选定选项

javascript - 转译为 es5 时 Jquery 不起作用

html - 如何将 css 样式应用到 iframe 内容中?