【问题标题】:How to trigger onChange event dynamically using javascript and PHP如何使用 javascript 和 PHP 动态触发 onChange 事件
【发布时间】:2016-05-17 14:20:54
【问题描述】:

我需要一个帮助。我正在从我的数据库中获取数据,当数据获取时我需要一个 Javascript 函数将通过 onChange 事件调用。让我解释一下我的代码。

<?php
  $id=$_GET['ids'];
  if($id!=""){
    $getcustomerobj = $dbobj->getFeedbackData($db,$id);
   }
?>

  <div style="width:24%; float:left; padding:10px;">Answer Type : 
<select class="form-control" id="answer_type" name="answer_type" onChange="selectScale(this.value);">
<option value="">Select Answer Type</option>
 <?php
$ustatus=array("status"=>'1');
$feeddata=$db->kf_answertype->find($ustatus);
 foreach($feeddata as $v){
?>
<option value="<?php echo $v['_id']; ?>" <?php if($getcustomerobj->answer_type == $v['_id'] or $_REQUEST['answer_type'] == $v['_id']){ print 'selected'; } ?>><?php echo $v['answertype']; ?></option>                          
 <?php } ?>
</select>
</div>
 <div style="width:24%; float:left; padding:10px; display:none;" id="scaleid">Scale :
<select class="form-control" id="nscale" name="noofscale"> 
<option value="">Select No Of Scale</option>
<?php
$status=array("status"=>'1');
 $feeddata=$db->kf_scale->find($ustatus);
 foreach($feeddata as $v){
 ?>
<option value="<?php echo $v['_id']; ?>" <?php if($getcustomerobj->no_of_scale == $v['_id'] or $_REQUEST['no_of_scale'] == $v['_id']){ print 'selected'; } ?>><?php echo $v['noofscale']; ?></option>                           
     <?php } ?>
  </select>
 </div>

<script>
  function selectScale(id){
    console.log('select scale',id);
    var data=$.param({'op':'getscale','sid':id});
    $.ajax({
        method:'POST',
        url:"dbcon/DBConnection.php",
        data:data
    }).done(function(msg){
        //console.log('msg',msg);
        var dedata=JSON.parse(msg);
        //console.log('decode',dedata);
        if(dedata[0]['data']==1){
            document.getElementById("scaleid").style.display="block";
        }
        if(dedata[0]['data']==0){
            document.getElementById("scaleid").style.display="none";
        }
    });
}
</script>

在这里,当从 DB 获取数据时,我需要 Answer Type 下拉字段设置一些值。由于第二个下拉列表(即Scale)取决于第一个下拉列表,我需要调用 @ 987654324@ 使用 onChange 事件触发的函数。请帮助我。

【问题讨论】:

  • onChange() 事件可以像这样手动触发,$('#answer_type').change()。这将调用 answer_type 下拉菜单的更改事件。
  • 我将如何在 PHP 中执行此操作。我的要求是当用户使用`$getcustomerobj = $dbobj->getFeedbackData($db,$id);`获取数据时,应该调用该函数。
  • PHP 是服务器端,Javascript 是客户端。您不能从 php 调用 Javascript。反之亦然。
  • 那么我该如何解决这个问题。
  • 其实你需要回显 js 脚本来调用 php 脚本中的更改事件,但我可以看到的潜在问题是你的 answer_type 下拉 php 脚本将在你的此代码 $getcustomerobj = $dbobj-&gt;getFeedbackData($db,$id); 之后执行,因此,如果您将更改代码放在这里,那么它将无法正常工作。我希望你能想象它。

标签: javascript php jquery


【解决方案1】:

我认为您可以为文档就绪的第一个下拉菜单调用 onchange 事件,因此将基于此选择您的第二个下拉值。

  $(document).ready(function(){
    $("#answer_type").trigger("change");
    });

也许这对你有帮助。

【讨论】:

    【解决方案2】:

    据我了解,您只需将此行添加到您的 java 脚本中

    selectScale($('#answer_type').val());
    

    此解决方案也可以通过使用 jQuery 触发更改功能来工作

    $("#answer_type").trigger("change");
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-16
    • 1970-01-01
    • 2021-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多