gpt4 book ai didi

javascript - 如何在使用 Ajax 时在 JavaScript 和 PHP 中为下拉菜单设置增量值

转载 作者:行者123 更新时间:2023-11-29 06:07:39 26 4
gpt4 key购买 nike

我正在研究多动态下拉选项,并尝试在用户单击添加按钮时设置增量值(在 JavaScript 中使用 .append 函数)在使用 Ajax 时在 JavaScript 和 php 中为下拉选项设置增量值所以需要一个解决方案对于这个问题:

<?php  // it is use for database connection with PDO
function load_country(){
include('config.php');
$output = '';
$statement = $db->prepare("SELECT * FROM tbl_country ORDER BY country_name");
$statement->execute();
$result = $statement->fetchAll(PDO::FETCH_ASSOC);
foreach($result as $row) {
$output .= '<option value="'.$row["country_id"].'">'.$row["country_name"].'</option>';
}
return $output;
}
?>
<html> <head> <script src="jquery.js"></script> </head> //This is the form part of html
<body>
<table><input type="button" class="btn btn-primary add" value="+">
<tbody class="details">
<tr>
<td><select name="country[]" class="country"><option value="">Country</option> <?php echo load_country(); ?></select></td>
<td><select name="state[]" class="state"><option value="">state</option> </select></td>
<td><select name="money[]" class="money"><option value="">money</option></select></td>
</tr>
</tbody>
</table>
</body>
</html>
<script type="text/javascript">
var i = 0;
$(function(){
$('.add').click(function(){ // here add button code
var tr = '<tr>'+
'<td><select name="country[]" class="country'+i+'"><option value="">Select Country</option> <?php echo load_country(); ?></select></td>'+
'<td><select name="state[]" class="state'+i+'"><option value="">Select state</option> </select></td>'+
'<td><select name="money[]" class="money'+i+'"><option value="">Select money</option></select></td>'+
'</tr>';
$('.details').append(tr); // append function
$(document).ready(function(){ // ajax data load for country
$('.country+i+').change(function(){
var country_id = $(this).val();
$.ajax({
url:"fetch_state.php",
method:"POST",
data:{countryId:country_id},
dataType:"text",
success:function(data) {
$('.state+i+').html(data);
}
});
});
});
$(document).ready(function(){ // ajax data load for state
$('.state+i+').change(function(){
var state_id = $(this).val();
$.ajax({
url:"fetch_money.php",
method:"POST",
data:{stateId:state_id},
dataType:"text",
success:function(data) {
$('.money+i+').html(data);
}
});
});
});
});
i++;
});
$(document).ready(function(){
$('.country').change(function(){
var country_id = $(this).val();
$.ajax({
url:"fetch_state.php",
method:"POST",
data:{countryId:country_id},
dataType:"text",
success:function(data) {
$('.state').html(data);
}
});
});
});
$(document).ready(function(){
$('.state').change(function(){
var state_id = $(this).val();
$.ajax({
url:"fetch_money.php",
method:"POST",
data:{stateId:state_id},
dataType:"text",
success:function(data) {
$('.money').html(data);
}
});
});
});
</script>

我的代码看起来很大,但我尝试分享所有这些,它可以帮助您理解我的问题。当点击 Add Append 功能正常工作时,认为是下拉列表不像第一个那样工作,所以我使用增量值作为“i”。但没有工作。我展示一张你明白我需要什么的图片 enter image description here我希望你能帮助我。提前致谢。

最佳答案

无需一次又一次地重新生成相同的js代码。只需使用三类。你可以这样试试。

Here I've used some dummy options as I've no access to ajax response.

SEE DEMO

HTML:

<table><input type="button"  class="btn btn-primary add" value="+">
<tbody class="details">
<tr>
<td><select name="country[]" class="country"><option value="">Country</option> <option value="1">Country 1</option></select></td>
<td><select name="state[]" class="state"><option value="">state</option><option value="1">state 1</option> </select></td>
<td><select name="money[]" class="money"><option value="">money</option><option value="1">money 1</option></select></td>
</tr>
</tbody>

JS:

$(document).ready(function(){
$('.add').click(function(){ // here add button code
var tr = '<tr>'+
'<td><select name="country[]" class="country"><option value="">Country</option> <option value="1">Country 1</option> <?php echo load_country(); ?></select></td>'+
'<td><select name="state[]" class="state"><option value="">state</option><option value="1">state 1</option> </select></td>'+
'<td><select name="money[]" class="money"><option value="">Select money</option></select></td>'+
'</tr>';
$('.details').append(tr); // append function

});

$(document).on('change', '.country', function(){
var country_id = $(this).val();
var _this = $(this).parents("tr").find(".state");

$.ajax({
url:"fetch_state.php",
method:"POST",
data:{countryId:country_id},
dataType:"text",
success:function(data) {

$(_this).html(data);
}
});
});
$(document).on('change', '.state', function(){
var state_id = $(this).val();
var _this = $(this).parents("tr").find(".money");
$.ajax({
url:"fetch_money.php",
method:"POST",
data:{stateId:state_id},
dataType:"text",
success:function(data) {
$(_this).html(data);
}
});
});
});

记住,最好这样写:

$(document).on('change', '.country', function(){
.............
............
});

代替:

$('.country').change(function(){  
.............
............
});

关于javascript - 如何在使用 Ajax 时在 JavaScript 和 PHP 中为下拉菜单设置增量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40435001/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com