【发布时间】:2019-07-24 00:56:12
【问题描述】:
您好,感谢您抽出宝贵时间阅读我的问题。
这是我的第一篇文章,我已经尽量做到全面,并遵循发帖的预期要求!
我的设置
我有一个从 mysql 数据库填充的数据表,每一行都有一个“编辑”按钮。
“编辑”按钮打开一个包含该行数据的模式。这一切正常。
在模态表单中,我有一个带有“onchange”事件的“select”下拉元素来触发消息。
问题
从第一个模式中(从第一个表格行的“编辑”按钮打开) 消息被触发没有问题 - 在链接到第一行的模式窗口中。
但是,如果我单击任何其他行的“编辑”按钮以启动它的模式 - 然后我更改“选择”下拉值,则不会显示消息 - 就好像没有处理 javascript 函数一样。
我目前的研究
花时间在 Stack Overflow 上搜索和搜索后,我认为问题可能与非唯一 ID 或类名有关 - 并且每个记录行的它们应该不同?
我尝试通过使用行的 ID 号动态生成 ID 名称和类名称来实现这一点 - 所以每个模式都有自己的唯一 ID 用于“选择”元素 - 但这并没有解决问题。
我也认为这可能是脚本保留旧数据的缓存问题,但是如果我第一次单击第一行,或者单击其他几个后单击第一行,这并不重要在它之前的行,它只是成功处理 onchange 事件的第一行。
我的文件
index.php(显示数据表和“编辑”按钮)
<table>
<thead>
<th>Fruit ID</th>
<th>Fruit Name</th>
<th>Action</th>
</thead>
<tbody>
<tr>
<td><?php echo $row['fruitID']; ?></td>
<td><?php echo $row['fruitName']; ?></td>
<td>
<a href="#edit<?php echo $row['fruitID']; ?>" data-toggle="modal" class="btn btn-warning">Edit</a>
<?php include('button.php'); ?>
</td>
</tr>
</tbody>
</table>
button.php(带有'select'元素和消息div的模态内容)
<div class="modal fade" id="edit<?php echo $row['fruitID']; ?>" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-body">
<div class="row">
<div>
<select class="mySelector" id="mySelector" name="mySelector" onchange="show_value()">
<option value="Apple">Apple</option>
<option value="Orange">Orange</option>
<option value="Banana">Banana</option>
<option value="Mango">Mango</option>
</select>
</div>
</div>
<div class="row">
<div id="result"></div>
</div>
</div>
</div>
脚本(在button.php底部触发消息)
<script>
function show_value() {
selected_value = document.getElementById("mySelector").value;
document.getElementById("result").innerHTML = "Selected value is "+selected_value;
}
</script>
【问题讨论】:
-
您在每个模式中都有相同的
id="mySelector"。 ID 应该是唯一的。getElementById("mySelector")只会选择第一个。 -
嗨 Barmar - 感谢您的评论。如前所述,我确实尝试过动态 ID,因此每个“选择”都有一个像
id="<?php echo $row['fruitID']; ?>这样的唯一 ID,但这并没有解决问题 -
您是否更改了
show_value()以便它知道从哪个选择器获取值?
标签: javascript php bootstrap-modal