我有一个简单的日期范围搜索表格,并使用Bootstrap使用"高级选项"下拉列表。我的问题是,当用户在显示高级下拉列表时按下提交按钮时,它在不同的浏览器上具有不同的行为。在IE中,下拉列表关闭和表格将提交。在Chrome中,下拉菜单关闭,但我必须第二次单击"提交"按钮才能获取表格提交。
如果我拦截了按钮单击事件并手动提交,则可以在Chrome中单击一键,但该表格在IE中两次提交。
是否有任何方法可以在两个浏览器中获得一致的行为?
https://jsfiddle.net/joeykruger75/bv8dshu8/
$('#date-range-box').daterangepicker({
"startDate": "07/14/2017",
"endDate": "07/20/2017"
});
$('.dropdown-menu').click(function(e) {
e.stopPropagation(); //This will prevent the event from bubbling up and close the dropdown when you type/click on text boxes.
});
$('#search-form').submit(function(ev) {
ev.preventDefault();
showMsg('submitted');
});
function showMsg(msg) {
var options = {
day: "2-digit",
hour: "2-digit",
minute: "2-digit",
second: "2-digit",
year: "numeric",
month: "2-digit",
useGrouping: "false"
};
var dateS = new Date().toLocaleString('en-GB', options);
toastr.options.positionClass = "toast-bottom-right";
toastr.info(msg + ' - ' + dateS, {
"positionClass": "toast-bottom-right",
});
}
body {
padding-top: 50px;
}
.dropdown.dropdown-lg .dropdown-menu {
margin-top: -1px;
padding: 6px 20px;
}
.input-group-btn .btn-group {
display: flex !important;
}
.btn-group .btn {
border-radius: 0;
margin-left: -1px;
}
.btn-group .btn:last-child {
border-top-right-radius: 4px;
border-bottom-right-radius: 4px;
}
.btn-group .form-horizontal .btn[type="submit"] {
border-top-left-radius: 4px;
border-bottom-left-radius: 4px;
}
.form-horizontal .form-group {
margin-left: 0;
margin-right: 0;
}
.form-group .form-control:last-child {
border-top-left-radius: 4px;
border-bottom-left-radius: 4px;
}
@media screen and (min-width: 768px) {
#adv-search {
width: 400px;
margin: 0 auto;
}
.dropdown.dropdown-lg {
position: static !important;
}
.dropdown.dropdown-lg .dropdown-menu {
min-width: 400px;
}
}
<script src="https://cdn.jsdelivr.net/momentjs/latest/moment.min.js"></script>
<link href="https://cdn.jsdelivr.net/bootstrap.daterangepicker/2/daterangepicker.css" rel="stylesheet" />
<link href="https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/toastr.min.css" rel="stylesheet" />
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/js/toastr.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://cdn.jsdelivr.net/bootstrap.daterangepicker/2/daterangepicker.js"></script>
<form name="myform" id="search-form" class="form-horizontal" role="form">
<div class="container">
<div class="row">
<div class="col-md-12">
<div class="input-group" id="adv-search">
<input type="text" class="form-control" placeholder="Search for snippets" id="date-range-box" />
<div class="input-group-btn">
<div class="btn-group" role="group">
<div class="dropdown dropdown-lg">
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-expanded="false">Advanced <span class="caret"></span></button>
<div class="dropdown-menu dropdown-menu-right" role="menu">
<div class="form-group">
<label for="filter">Location</label>
<select class="form-control">
<option value="0" selected>All Locations</option>
<option value="1">Location #1</option>
<option value="2">Location #2</option>
<option value="3">Location #3</option>
<option value="4">Location #4</option>
</select>
</div>
<div class="form-group">
<label for="filter">Product</label>
<select class="form-control">
<option value="0" selected>All Products</option>
<option value="1">Product #1</option>
<option value="2">Product #2</option>
<option value="3">Product #3</option>
<option value="4">Product #4</option>
<option value="4">Product #5</option>
</select>
</div>
<div class="form-group">
<label for="contain">Customer Ref</label>
<input class="form-control" type="text" />
</div>
</div>
</div>
<button type="submit" class="btn btn-primary"><span class="glyphicon glyphicon-search" aria-hidden="true"></span></button>
</div>
</div>
</div>
</div>
</div>
</div>
</form>
尝试return false
选项而不是ev.preventDefault()
https://subinsb.com/jquery-return-false-vs-preventdefault/