【发布时间】:2018-07-02 09:12:21
【问题描述】:
我正在尝试使用.load(url) 将表单加载到对话框中,然后在其上启用 AJAX 提交。它确实将表单加载到对话框中,但它似乎完全忽略了我的 jQuery 代码,只是在页面刷新时正常提交。
我在多个站点(非动态)上使用 AJAX 代码,并且按预期工作。
这里我给你看代码:
javascript.js;包装成一个 ready() 来提交动态表单
$("#dbsearch").submit(function(event) {
alert('click!');
var data = $("#dbsearch").serialize();
$.ajax({
url: 'ajax.php',
type: 'POST',
data: data,
success: function(response) {
alert(response);
}
});
event.preventDefault();
});
form.php;加载到模态中
<form method="post" id="dbsearch">
<div class="form-group col-xs-12 col-md-12">
<label for="method" class="control-label">Search By</label>
<select class="form-control" id="method" name="method">
<option>Choose...</option>
<option value="content-type">Search By Name</option>
<option value="release-date">Search By Release Date</option>
</select>
</div>
<div class="form-group col-xs-12 col-md-12">
<label for="value" class="control-label">Value</label>
<input type="text" value="" class="form-control" id="value" placeholder="Enter a term...">
</div>
<div class="form-group col-xs-12 col-md-12">
<input type="submit" value="Search" class="btn btn-primary btn-block">
</div>
</form>
这可能是什么原因造成的?是因为它是动态加载到对话框中的吗?如果是这样,解决此类问题的最佳方法是什么?
更新的 JS 代码
$("#dbsearch").delegate("#dbsearch input[type=submit]", "click", function(event) {
alert('click!');
var data = $("#dbsearch").serialize();
$.ajax({
url: 'ajax.php',
type: 'POST',
data: data,
success: function(response) {
alert(response);
}
});
event.preventDefault();
});
【问题讨论】: