gpt4 book ai didi

javascript - 通过基于选择的选择选项获取动态添加 DIV

转载 作者:行者123 更新时间:2023-11-28 04:50:37 25 4
gpt4 key购买 nike

各位程序员精英大家好!

我目前正在编写一个脚本,它将与我的其他脚本结合起来。

  • 第一个允许用户添加多个包含一组选择字段的 DIV。第一个从数据库中获取选择的选项,而下面的其他 5 个选项将被禁用,直到您选择并
  • 然后,另一个将根据您所做的选择获取选择选项,并一次启用一个(总是在下一个选择之后;请参阅 fiddle )

ATM 我设法编写了一个“静态”版本,这意味着只有第一组选择字段可以工作(获取、启用等),但脚本附加的字段将不起作用。

也许我想得太复杂了,但我已经尝试过类和 ID。他们似乎都不适合我。

我想补充一点,我在 javascript/jQuery 方面的知识还不够丰富,所以我需要帮助。在下面您将找到代码和我当前进度的现成 fiddle 。

请注意,获取的脚本只是传递 $_POST 并查询要在我的数据库中搜索的值。该脚本未添加到 fiddle 中。如果需要,我会添加它,但据我所知,这只是一个 Javascript/jQuery 问题。

我感谢每一个提示和帮助!

<!-- HTML / PHP -->
<div class="mz_input_fields_wrap">
<a href="#" class="mz_add_field_button">
<table width="385px" cellspacing="5px" style="border-left: 1px solid #FFFFFF; border-top: 1px solid #FFFFFF; border-right: 1px solid #FFFFFF; border-bottom: 0;">
<tr>
<th align="left">Add exam</th>
<th align="right"><font color="#FFD700">[+]</font></th>
</tr>
<tr>
<th colspan="2"><hr /></th>
</tr>
</table>
</a>
<div>
<table id="addmz" width="385px" cellspacing="5px" style="border-left: 1px solid #FFFFFF; border-top: 0; border-right: 1px solid #FFFFFF; border-bottom: 0;">
<tr>
<td align="left">Exam<font color="#8E6516">*</font></td>
<td align="right">
<select name="mz_id[]" class="rd_id" style="background: transparent; background-color: #FFFFFF; color: #8E6516; width: 135px;" required="required" >
<?
$select_option = "SELECT * FROM _main_wptable WHERE `event_id` = '".$event_id."' ORDER BY rd_id ASC";
$result_option = mysqli_query($mysqli, $select_option);
$anzahl_option = mysqli_num_rows($result_option);

if($anzahl_option > 0) {
echo "<option value=''>Choose exam</option>";
while($row = mysqli_fetch_assoc($result_option)) {
echo "<option value='".$row["rd_id"]."'>".$row["rd_type"].$row["rd_id"]."</option>";
}
} elseif($anzahl_option == 0) {
echo "<option value=''>No exams available</option>";
}
?>
</select>
</td>
</tr>
<tr>
<td align="left">1. Position<font color="#8E6516">*</font></td>
<td align="right">
<select name="mz_id[]" class="rd_id_pos_1" style="background: transparent; background-color: #FFFFFF; color: #8E6516; width: 135px;">
<option value=" " selected="selected">Choose exam first</option>
</select>
</td>
</tr>
<tr>
<td align="left">2. Position<font color="#8E6516">*</font></td>
<td align="right">
<select name="mz_id[]" class="rd_id_pos_2" style="background: transparent; background-color: #FFFFFF; color: #8E6516; width: 135px;">
<option value=" " selected="selected">Choose exam first</option>
</select>
</td>
</tr>
<tr>
<td align="left">3. Position<font color="#8E6516">*</font></td>
<td align="right">
<select name="mz_id[]" class="rd_id_pos_3" placeholder="Bitte auswählen" style="background: transparent; background-color: #FFFFFF; color: #8E6516; width: 135px;">
<option value=" " selected="selected">Choose exam first</option>
</select>
</td>
</tr>
<tr>
<td align="left">4. Position<font color="#8E6516">*</font></td>
<td align="right">
<select name="mz_id[]" class="rd_id_pos_4" placeholder="Bitte auswählen" style="background: transparent; background-color: #FFFFFF; color: #8E6516; width: 135px;">
<option value=" " selected="selected">Choose exam first</option>
</select>
</td>
</tr>
<tr>
<td align="left">5. Position<font color="#8E6516">*</font></td>
<td align="right">
<select name="mz_id[]" class="rd_id_pos_5" placeholder="Bitte auswählen" style="background: transparent; background-color: #FFFFFF; color: #8E6516; width: 135px;">
<option value=" " selected="selected">Choose exam first</option>
</select>
</td>
</tr>
</table>
<!-- END OF HTML / PHP -->

<!-- JS / JQUERY -->
$(document).ready(function() {
// DEPENDENT SELECT OPTIONS
$('.rd_id').on('change',function(){
var rd_idID = $(this).val();
if(rd_idID){
$.ajax({
type: 'POST',
url: 'ajaxProcessing.php',
data: 'rd_id='+rd_idID,
success: function(html){
$('.rd_id_pos_1').html(html);
$('.rd_id_pos_2').html('<option value="">Choose 1. Pos. </option>');
$('.rd_id_pos_3').html('<option value="">Choose 1. Pos. </option>');
$('.rd_id_pos_4').html('<option value="">Choose 1. Pos. </option>');
$('.rd_id_pos_5').html('<option value="">Choose 1. Pos. </option>');
}
});
}else{
$('.rd_id_pos_1').html('<option value="">Choose exam</option>');
$('.rd_id_pos_2').html('<option value="">Choose exam</option>');
$('.rd_id_pos_3').html('<option value="">Choose exam</option>');
$('.rd_id_pos_4').html('<option value="">Choose exam</option>');
$('.rd_id_pos_5').html('<option value="">Choose exam</option>');
}
});

$('.rd_id_pos_1').on('change',function(){
var rd_idID = $('.rd_id').val();
var rd_id_pos_1ID = $(this).val();
if(rd_id_pos_1ID){
$.ajax({
type: 'POST',
url: 'ajaxProcessor.php',
data: 'rd_id='+rd_idID,
success: function(html){
$('.rd_id_pos_2').html(html);
$('.rd_id_pos_3').html('<option value="">Choose 2. Pos.</option>');
$('.rd_id_pos_4').html('<option value="">Choose 2. Pos.</option>');
$('.rd_id_pos_5').html('<option value="">Choose 2. Pos.</option>');
}
});
}else{
$('.rd_id_pos_2').html('<option value="">Choose 1. Pos.</option>');
$('.rd_id_pos_3').html('<option value="">Choose 1. Pos.</option>');
$('.rd_id_pos_4').html('<option value="">Choose 1. Pos.</option>');
$('.rd_id_pos_5').html('<option value="">Choose 1. Pos.</option>');
}
});

$('.rd_id_pos_2').on('change',function(){
var rd_idID = $('.rd_id').val();
var rd_id_pos_2ID = $(this).val();
if(rd_id_pos_2ID){
$.ajax({
type: 'POST',
url: 'ajaxProcessor.php',
data: 'rd_id='+rd_idID,
success: function(html){
$('.rd_id_pos_3').html(html);
$('.rd_id_pos_4').html('<option value="">Choose 3. Pos.</option>');
$('.rd_id_pos_5').html('<option value="">Choose 3. Pos.</option>');
}
});
}else{
$('.rd_id_pos_3').html('<option value="">Choose 2. Pos.</option>');
$('.rd_id_pos_4').html('<option value="">Choose 2. Pos.</option>');
$('.rd_id_pos_5').html('<option value="">Choose 2. Pos.</option>');
}
});

$('.rd_id_pos_3').on('change',function(){
var rd_idID = $('.rd_id').val();
var rd_id_pos_3ID = $(this).val();
if(rd_id_pos_3ID){
$.ajax({
type: 'POST',
url: 'ajaxProcessor.php',
data: 'rd_id='+rd_idID,
success: function(html){
$('.rd_id_pos_4').html(html);
$('.rd_id_pos_5').html('<option value="">Choose 4. Pos.</option>');
}
});
}else{
$('.rd_id_pos_4').html('<option value="">Choose 3. Pos.</option>');
$('.rd_id_pos_5').html('<option value="">Choose 3. Pos.</option>');
}
});

$('.rd_id_pos_4').on('change',function(){
var rd_idID = $('.rd_id').val();
var rd_id_pos_4ID = $(this).val();
if(rd_id_pos_4ID){
$.ajax({
type: 'POST',
url: 'ajaxProcessor.php',
data: 'rd_id='+rd_idID,
success: function(html){
$('.rd_id_pos_5').html(html);
}
});
}else{
$('.rd_id_pos_5').html('<option value="">Choose 4. Pos.</option>');
}
});

// EXAMS
// MAX INPUT ALLOWED
var mz_max_fields = 15;

// FIELDS WRAPPER
var mz_wrapper = $(".mz_input_fields_wrap");

// ADD BUTTON ID
var mz_add_button = $(".mz_add_field_button");

// INITIAL TEXT BOX COUNT
var mz_x = 1;

// ON ADD INPUT BUTTON CLICK
$(mz_add_button).click(function(e){
e.preventDefault();

// MAX INPUT ALLOWED
if(mz_x < mz_max_fields){
// TEXT BOX INCREMENT
mz_x++;

// ADD INPUT BOX
$(mz_wrapper).append("<div><table id='addmz' width='385px' cellspacing='5px' style='border-left: 1px solid #FFFFFF; border-top: 0; border-right: 1px solid #FFFFFF; border-bottom: 0;'><tr><th colspan='2'>&nbsp;</th></tr><tr><th colspan='2'><hr class='white-hr' /></th></tr><tr><th colspan='2'>&nbsp;</th></tr></table><a href='#' class='mz_remove_field'><table id='addmz' width='385px' cellspacing='5px' style='border-left: 1px solid #FFFFFF; border-top: 0; border-right: 1px solid #FFFFFF; border-bottom: 0;'><tr><th align='left'>Delete Exam</th><th align='right'><font color='#FFD700'>[&ndash;]</font></th></tr></table></a><tr><th colspan='2'><hr /></th></tr></table><table width='385px' cellspacing='5px' style='border-left: 1px solid #FFFFFF; border-top: 0; border-right: 1px solid #FFFFFF; border-bottom: 0;'><tr><td align='left'>Exam<font color='#8E6516'>*</font></td><td align='right'><select name='mz_id[]' id='rd_id_" + mz_x +"' style='background: transparent; background-color: #FFFFFF; color: #8E6516; width: 135px;' required='required'><? if($anzahl_option > 0) { echo "<option value=''>Choose exam</option>"; while($row = mysqli_fetch_assoc($result_option)) { echo "<option value='".$row["rd_id"]."'>".$row["rd_type"].$row["rd_id"].$what."</option>"; } } elseif($anzahl_option == 0) { echo "<option value=''>No exams available</option>"; } ?></select></td></tr><tr><td align='left'>1. Position<font color='#8E6516'>*</font></td><td align='right'><select name='mz_id[]' id='rd_id_pos_" + mz_x + "_1' style='background: transparent; background-color: #FFFFFF; color: #8E6516; width: 135px;'><option value=' ' selected='selected'>Choose exam</option></select></td></tr><tr><td align='left'>2. Position<font color='#8E6516'>*</font></td><td align='right'><select name='mz_id[]' id='rd_id_pos_" + mz_x + "_2' style='background: transparent; background-color: #FFFFFF; color: #8E6516; width: 135px;'><option value=' ' selected='selected'>Choose exam</option></select></td></tr><tr><td align='left'>3. Position<font color='#8E6516'>*</font></td><td align='right'><select name='mz_id[]' id='rd_id_pos_" + mz_x + "_3' style='background: transparent; background-color: #FFFFFF; color: #8E6516; width: 135px;'><option value=' ' selected='selected'>Choose exam</option></select></td></tr><tr><td align='left'>4. Position<font color='#8E6516'>*</font></td><td align='right'><select name='mz_id[]' id='rd_id_pos_" + mz_x + "_4' style='background: transparent; background-color: #FFFFFF; color: #8E6516; width: 135px;'><option value=' ' selected='selected'>Choose exam</option></select></td></tr><tr><td align='left'>5. Position<font color='#8E6516'>*</font></td><td align='right'><select name='mz_id[]' id='rd_id_pos_" + mz_x + "_5' style='background: transparent; background-color: #FFFFFF; color: #8E6516; width: 135px;'><option value=' ' selected='selected'>Choose exam</option></select></td></tr></tr></table></div>");
}
});

// USER CLICK TO REMOVE TEXT
$(mz_wrapper).on("click",".mz_remove_field", function(e){
e.preventDefault(); $(this).parent('div').remove();
mz_x--;
});
});
<!-- END OF JS / JQUERY -->

JSFiddle - Dynamic Add with dependant select option each

最佳答案

我自己发现的。如上所述,我希望实现附加内容能够触发 AJAX。因此,代替(例如):

$('.rd_id_pos_1').on('change', function(){ /* see fiddle for the rest */ } 

我把它改为:

$(document).on('change', '.rd_id_pos_1', function(){ /* see fiddle for the rest */ } 

因此,我没有选择附加内容的类,而是简单地选择了该类所在的文档。工作正常。

提示:未在 fiddle 中实现,所以请自行解决。

关于javascript - 通过基于选择的选择选项获取动态添加 DIV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42954371/

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