我正在为我的网站使用 PHP、jQuery。我关注页面加载时页面上存在的 HTML 元素。
//Date picker controls
<input class="form-control date_control" placeholder="yyyy-mm-dd" type="date" name="rebate_start_date[1]" id="rebate_start_date_1" value="">
<input class="form-control date_control" placeholder="yyyy-mm-dd" type="date" name="rebate_expiry_date[1]" id="rebate_expiry_date_1" value="">
//Select control
<select class="states" multiple="multiple" name="applicable_states[1]" id="applicable_states_1">
<option value="1">Alabama</option>
<option value="2">Alaska</option>
<option value="3">Arizona</option>
<option value="4">Arkansas</option>
<option value="5">California</option>
</select>
在上面的代码中,我向 HTML 控件添加了 jQuery 类,以使 jQuery 功能可用。
- .date_control 用于两个日期选择器控件
- .states 用于选择控制
上述指定类的上述 HTML 元素的 jQuery 代码如下:
$(document).ready(function() {
//code for datepicker
$(".date_control").datepicker({
dateFormat: "yy-mm-dd"
});
//code for states
$('.states').multiselect({
includeSelectAllOption: true,
maxHeight: 150
});
});
现在单击页面上的按钮,我正在调用 AJAX 函数,如下所示。
<button style="float:right" class="add_new_rebate" type="button" class="btn btn-default" onclick="add_rebate_by_product(); return false;"><i class="icon-plus"></i> Add New Rebate</button>
然后在 AJAX 函数中我调用一个 PHP 文件。在 PHP 文件中,我正在做出响应并将其发送回 AJAX 请求。到这里一切正常。但我面临的问题是我通过 AJAX 响应添加的 HTML 控件上的 jQuery 功能不起作用。在准备 PHP 响应时,我已经注意添加与上面相同的类。即使我通过检查相应的 HTML 元素来检查源 HTML,jQuery 类也存在于那里,但功能仍然无法正常工作。供您参考,我在下面给出了 AJAX 请求代码和 PHP 文件中的响应准备代码:
//AJAX request code
function add_rebate_by_product() {
var manufacturer_id = $("#company_id").val();
var next_rebate_no = $('.rebate_block').length + 1;
var rebate_no = $('.rebate_block').length + 1;
if ($('.rebate_block').length>0) {
rebate_no = rebate_no+1;
}
$('.add_new_rebate').attr('disabled','disabled');
$.ajax({
type: "POST",
url: "add_rebate_by_product.php",
data: {'request_type':'ajax', 'op':'create_rebate', 'next_rebate_no':next_rebate_no, 'rebate_no':rebate_no, 'manufacturer_id':manufacturer_id},
beforeSend: function() {
$('.table-responsive').after("<img src='http://localhost/smart-rebate-web/web/img/ajax-loader.gif' class='load' alt='Loading...'>");
},
success: function(data) {
if(jQuery.trim(data)=="session_time_out") {
window.location.href = site_url+'admin/login.php?timeout=1';
} else {
$('.rebate_block').append(data);
$('.add_new_rebate').removeAttr('disabled');
}
$('.load').remove();
}
});
}
//PHP code snippet to prepare response
<?php
$op = $_REQUEST['op'];
switch( $op ) {
case "create_rebate":
echo "<input class='form-control date_control' placeholder='yyyy-mm-dd' type='date' name='rebate_start_date[$rebate_no]' id='rebate_start_date_$rebate_no' value=''><input class='form-control date_control' placeholder='yyyy-mm-dd' type='date' name='rebate_expiry_date[$rebate_no]' id='rebate_expiry_date_$rebate_no' value=''>
<select class='states' multiple='multiple' name='applicable_states[$reabate_no]' id='applicable_states_$reabate_no'>
<option value='1'>Alabama</option>
<option value='2'>Alaska</option>
<option value='3'>Arizona</option>
<option value='4'>Arkansas</option>
<option value='5'>California</option>
</select>";
exit;
}
?>
我对此进行了很多搜索,但仍然无法获得完美的解决方案,该解决方案可以使 jQuery 功能适用于使用 AJAX 添加的 HTML 控件。那么有人可以在这方面帮助我吗?感谢您花费宝贵的时间来理解我的问题。如果您需要有关该问题的任何信息,我可以为您提供相同的信息。任何形式的帮助、评论、建议、答案都将受到高度赞赏。等待您宝贵的回复。