我应该在哪里放这个JavaScript?
好吧我现在有这个问题已经好几个小时了。我有一个select
标签从HTML和它的选择是由PHP填充像这样:我应该在哪里放这个JavaScript?
<select class="form-control" name="statusOption" id="status">
<?php
$connn = $dbObject->dbConnect();
$results = $connn->query("SELECT statusName from status");
$counter=0;
while($statusNames = mysqli_fetch_array($results))
{
if($dbObject->getStatusValue($idstatus[0])===$statusNames[0])
echo "<option selected='selected' value='".$counter."''>".$statusNames[0]."</option>";
else echo "<option value='".$counter."''>".$statusNames[0]."</option>";
$counter++;
}
$connn->close();
...... etc
这里的关键是,那选择标记是一个模式里面。现在,默认情况下,选择标记是从数据库中选择的(这里的按钮是“编辑状态”,所以示例中我有“工作”状态,当我点击编辑按钮时,模式显示出来,并且选择标记自动选择“工作”,“缺陷”也是一样,现在出于错误捕获的目的,如果默认选择标签选择工作,如果我将选项更改为“缺陷”,另一个选择标签应该弹出(用于状态备注如果我再次将选择标签的选项更改为“工作”,备注的选择标签应该消失,因为它仅用于“缺陷”的事情
问题是这个我有这个代码(javascript),这样我就可以操纵显示和隐藏其他选择标记:
<script type='text/javascript'>
$('#status').change(function(){
if($(this).val() === 1){
$('#hide').show();
}else{
$('#hide').hide();
}
});
</script>
的情况选择标签的ID是状态,然后对言论的选择标记为隐藏:
<select class="form-control" name="statusRemark" style="display: none;" id="hide">
<?php
$connn = $dbObject->dbConnect();
$results = $connn->query("SELECT statusremarkName from statusremark");
while($row = mysqli_fetch_array($results))
{
echo "<option>".$row[0]."</option>";
}
$connn->close();
?>
</select>
不过。当我将脚本标签放入html的头标签或正文标签的底部或选择标签后面时,它们都不起作用。即使在php中回应它,这也没有帮助。我不知道在哪里放置该脚本,以便在单击缺陷时显示另一个选择标记。帮帮我?
补充说明我从上面的评论。至于在哪里添加它,我建议在body元素的底部。您遇到的问题与您的php无关,除非您在加载到客户端之前动态创建它们时选择器不匹配。我的猜测是,事件没有正确附加,因为它在文档完全加载之前运行,没有找到您的内容,或者您尝试选择不正确的选择器。其他人建议事件代表团,这也可能会在dom呈现问题之前解决问题。
<script>
// Adding the jQuery namespace and aliasing, this avoids namespace
// collision in codebases that have multiple handlers running jquery
jQuery(document).ready(function($) {
$('#status').on('change', function(event){
// adding a log here for debugging, will make sure
// you are triggering the event even if you see no change
console.log('inside change handler');
console.log($(this).val());
if($(this).val() === 1){
$('#hide').show();
}else{
$('#hide').hide();
}
});
});
</script>
我试过你的代码。正如我期望的那样,我从工作中得到0分,而从缺陷中得到1分。但另一个选择标签不显示。 –
哇,答案很简单。我使用@D Lowther的代码,然后稍微调整一下。这行代码if($(this).val() === 1){
我将它更改为if($(this).val() == 1){
我不知道如何,但。很奇怪,为什么这个小事会让人很头疼。
编辑:好的@Guruprasad饶建议if($(this).val() === "1"
也可以。
好吧,如果你混淆了'$(this).val()=== 1'中的“1”正如你可以从select id = status看到的那样,我用php来计算它,假设0正在工作,然后1是缺陷 –
它只是在它所针对的元素之后的任何地方(在这种情况下,'
你有没有尝试包装你的jQuery文档准备功能?这将确保dom在尝试附加事件之前已经呈现 –