问题
I've following HTML code:
<form action="view_rebate_master.php" method="post">
<div class="form-group">
<label for="company_name" class="col-lg-12">Manufacturer</label>
<div class="col-lg-12">
<select id="company_id" class="form-control" onchange="GetProductByManufacturerID(this.value)" name="company_id">
<option selected="selected" value="">All Manufacturers</option>
<option value="40">Test</option>
<option value="42">RK</option>
<option value="49">Blue Nun</option>
<option value="58">Unique Imports</option>
<option value="59">Pernod Ricard</option>
<option value="77">Smoking Loon</option>
<option value="78">Beringer</option>
</select>
</div>
</div>
<div class="col-xs-4">
<div class="form-group">
<label for="product_id" class="col-lg-12">Product Name</label>
<div class="col-lg-12">
<select id="product_id" class="form-control" name="product_id">
<option selected="selected" value="">All Products</option>
<option value="12">Riesling</option>
<option value="24">Superio Vodka</option>
<option value="32">Heineken</option>
<option value="33">Strong Bow</option>
<option value="34">Grocery</option>
<option value="35">Ruler</option>
<option value="36">Glass</option>
<option value="37">Brown Bread</option>
<option value="38">White Bread</option>
<option value="55">Cabernet Sauvignon</option>
</select>
</div>
</div>
</div>
<div class="col-lg-12">
<div class="col-xs-5">
<div class="form-group">
<button type="submit" class="btn btn-primary" name="search" id="search">Search Rebates</button>
</div>
</div>
</div>
The AJAX jQuery code is as follows:
function GetProductByManufacturerID(value) {
$.ajax({
type: "POST",
url: "add_rebate_by_quat_volume.php",
data: { manufacturer_id: value, op:"" },
beforeSend: function() {
$("#product_id").html('<option> Loading ...</option>');
},
success:function(data){
$("#product_id").html('');
$("#product_id").append(data);
}
});
}
I want to make the submit button disable when the AJAX function call is made by changing the value of select control(select control for Manufacturer selection) and it should be disabled till the AJAX success response is received. When AJAX success response will receive the user should be able to click on the submit button. How to achieve this? Thanks in advance.
回答1:
for disable
$("#search").prop('disabled', true);
for enable
$("#search").prop('disabled', false);
like below in your function
function GetProductByManufacturerID(value) {
$.ajax({
type: "POST",
url: "add_rebate_by_quat_volume.php",
data: { manufacturer_id: value, op:"" },
beforeSend: function() {
$("#product_id").html('<option> Loading ...</option>');
$("#search").prop('disabled', true); // disable button
},
success:function(data){
$("#product_id").html('');
$("#product_id").append(data);
$("#search").prop('disabled', false); // enable button
}
});
}
回答2:
Something like this would do what you want. This is global, for the whole page, for any ajax request.
$(document).ajaxStart(function() {
$("#search").prop('disabled', true);
}).ajaxStop(function() {
$("#search").prop('disabled', false);
});
回答3:
I would disable the button before ajax call and enable it again on success callback, any problem in doing somethig like below ?
function GetProductByManufacturerID(value) {
$('#search').addAttr('disabled');
$.ajax({
type: "POST",
url: "add_rebate_by_quat_volume.php",
data: { manufacturer_id: value, op:"" },
beforeSend: function() {
$("#product_id").html('<option> Loading ... </option>');
},
success:function(data){
$("#product_id").html('');
$("#product_id").append(data);
$('#search').removeAttr('disabled');
}
});
}
来源:https://stackoverflow.com/questions/24989475/how-to-disable-a-submit-button-when-ajax-request-is-in-progress-and-enable-it-af