javascript - 放置在表单内时按钮不起作用
问题描述
在下面的代码中,当按钮被放置在表单之外时,它在 ajax 中工作,但是当按钮被放置在表单内时,按钮不起作用。
HTML 代码
<div class="container">
<div class="row">
<form class="form-inline">
<label for="from">From:</label>
<input type="text" class="form-control" id="from" placeholder="Enter start date" name="from">
<label for="to">To:</label>
<input type="text" class="form-control" id="to" placeholder="Enter end date" name="to">
<label for="chart_type">Type : </label>
<select id="chart" name="chart">
<option value="1">option 1</option>
<option value="2">option 2</option>
<option value="3">option 3</option>
<option value="4">option 4</option>
<option value="5">option 5</option>
<option value="6">option 6</option>
</select>
</form>
<button id="date-submit-btn" class="btn btn-primary">Submit</button>
</div>
</div>
单击按钮时的 Ajax 请求
$(document).ready(function () {
$("#date-submit-btn").click(function(event){
var chartId = $("#chart").val();
var toDate = $("#to").val().split("/").reverse().join("-");
var fromDate = $("#from").val().split("/").reverse().join("-");
$("#chart1").empty();
$.ajax({
url:"action.php",
method:"POST",
data:{to:toDate,from:fromDate,chart:chartId},
success:function(returnData){
myDrawChart(returnData);
},
error:function(err){
console.log(err);
}
});
});
});
解决方案
您可以将按钮保留在表单中并添加type="button"以便不会通过单击按钮发送表单。
<div class="container">
<div class="row">
<form class="form-inline">
<label for="from">From:</label>
<input type="text" class="form-control" id="from" placeholder="Enter start date" name="from">
<label for="to">To:</label>
<input type="text" class="form-control" id="to" placeholder="Enter end date" name="to">
<label for="chart_type">Type : </label>
<select id="chart" name="chart">
<option value="1">option 1</option>
<option value="2">option 2</option>
<option value="3">option 3</option>
<option value="4">option 4</option>
<option value="5">option 5</option>
<option value="6">option 6</option>
</select>
<button type="button" id="date-submit-btn" class="btn btn-primary">Submit</button>
</form>
</div>
</div>
另一种阻止表单提交的方法是使用onsubmit="return false;" :
<div class="row">
<form onsubmit="return false;" class="form-inline">
//...
</form>
</div>
甚至将按钮修改为输入类型按钮也可以:
<input type="button" id="date-submit-btn" class="btn btn-primary" value="Submit">
推荐阅读
- javascript - 为什么变量会发生变化?
- c# - 不存在从 DbType UInt64 到已知 SqlDbType 的映射。小巧玲珑的 C#
- excel - 有没有办法让 Excel VBA 宏提示输入文件?
- xamarin - 用手指画的位图图像保存 SkiaSharp 画布
- xamarin.forms - Xamarin.Forms Shell 将数据传递到弹出项视图
- windows - 为什么 MS word 将文档保存为 txt 格式而不是 DOCX
- oauth-2.0 - Oauth2.0和用户注册登录
- python - 如何使用 TensorFlow 1.14 从 3D 张量中获得最大 2D 张量?
- javascript - 无法以角度从资产文件夹加载图像
- python - 删除散景python中的工具栏项