JS onload 函数在选择选项元素上使用目标 _self 或 _top [codeigniter3] 不起作用

问题描述

我正在 codeigniter 中创建名为“review页面的视图页面。并使用 JS onload 函数设置输入值。

我想在同一个寡妇中加载页面。但是当我在 JS 代码中使用 window.open(url,'_self')window.open(url,'_top') 时,页面review”上元素 <select> 中的输入值没有设置。 但是,当我使用 <select>

时,window.open(url,'_blank') 值已设置或有效

我该怎么办?

某些视图代码出错:

<div>
  <label>gender</label>
     <select id="gender" name="gender" required>
      <option value="">- select -</option>
      <option value="2">male</option>
      <option value="3">female</option>
    </select>
 </div>

我的 JS 代码放在页脚页面

$(document).ready(function(){
    $('.reviewBtn').click(function(){
     var dt0 = $(this).data('trans_code');
     var dt1 = $(this).data('status');
     var dt2 = $(this).data('gender');
     var pg1 = window.open('<?PHP echo base_url()?>trans/review/'+dt0,'_blank'); // input value set
     // var pg1 = window.open('<?PHP echo base_url()?>trans/review/'+dt0,'_self'); // input value not set
      pg1.onload = function(){
        if ( dt1 == "2" ) { // rejected
          pg1.document.getElementById('gender').value = dt2;
          pg1.document.getElementById('gender').required = false; // user Could change
        } else {
          pg1.document.getElementById('gender').value = dt2;
          // user Couldn't change
         }
      }
    });
  });

我的控制器

public function review($trans_code){ 
 $data['value']= $this->model->get_data($trans_code)->result(); // value = var to set another input value in review page
 $this->load->view('header');
 $this->load->view('review',$data);
 $this->load->view('footer');
}

解决方法

我终于解决了这个问题。我将 JS 代码分成两部分。首先,我将 JS 脚本 window.onload 移动到一个新页面 review。我使用php代码检索性别值foreach($value as $dt)modal结果中获取值

window.onload = function(){
  var dt0 = <?php echo $dt->trans_status?>;
  var dt1 = <?php echo $dt->cust_gender?>;
    if ( dt0 == "2" ) { // rejected
      document.getElementById('gender').value = dt1;
      document.getElementById('gender').required = false; // user could change
    } else {
        document.getElementById('gender').value = dt2;
          // user couldn't change
     }
}

二、修改footer中的JS代码

$('.reviewBtn').click(function(){
     var dt0 = $(this).data('trans_code');
     window.open('<?php echo base_url()?>trans/review/'+dt0,'_self'); 
});

<select> 值设置成功。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...