Javascript开启窗口

时间:2011-05-03 01:22:32

标签: javascript jquery html jsp

我有一个打开窗口的功能,新打开的窗口中的值列在开启窗口中。  第二个窗口 - 具有此功能:

function AddOtherRefDoc(name, number) {
    var remove = "<a href='javascript:void(0);' onclick='removeRefDoctor(this)'>Remove</a>";
    var html = "<li><b> Referral Doctor: </b>"+name+"<b>, Referral No: </b>"+number+ " " +remove+" <input type='text' name='ref_docs' value='"+name+"'></input><input type='text'  name='ref_nos' value='"+number+"'></input></li>";
    opener.jQuery("#r_docs").append(jQuery(html));
}

调用上述函数的函数是:

function addRefDoc(){

    var count = 0;
    var ref_docarray ;
    var ref_noarray ;

    <%for(int i1=0; i1<vec.size(); i1++) {
        prop = (Properties) vec.get(i1);
        String ref_no = prop.getProperty("referral_no","");
        String ref_name = (prop.getProperty("last_name", "")+ ","+ prop.getProperty("first_name", ""));
    %>
    if(document.getElementById("refcheckbox_<%=ref_no%>").checked) {
        count++;

        if ((ref_doctor!=null)&&(ref_doctor!="")&&(ref_docno!=null)&&(ref_docno!="")) {
            ref_docarray = ref_doctor.split(";");
            ref_noarray = ref_docno.split(";");

            if ((containsElem(ref_docarray,"<%=ref_name%>"))||(containsElem(ref_noarray,<%=ref_no%>))) {
                alert("Referral doctor " + "<%=ref_name%>" + " already exists");
            } else {
                AddOtherRefDoc("<%=ref_name%>", <%=ref_no%>);
            }
        } else {
            AddOtherRefDoc("<%=ref_name%>", <%=ref_no%>);
        }
    } 

    <%} %>

    self.close();
}

function containsElem(array1,elem) {
    for (var i=0;i<array1.length;i++) {
        if(array1[i]==elem){
        return true;
        } else{
            return false;
        }
    }
}

调用此函数时,应该将2个输入元素“ref_docs”和“ref_nos”带入打开此窗口的页面。但事实并非如此。它列出了元素,但是当我尝试在第一个窗口中的另一个Javascript函数中使用“ref_docs”和“ref_nos”时,我看到“ref_nos”和“ref_docs”为空。

我做错了什么?

function updateRd(){ 
   var ref_docs = jQuery("#updatedelete").find('input[name="ref_docs"]'); 
   var ref_nos = jQuery("#updatedelete").find('input[name="ref_nos"]');                       alert(ref_docs.val() + ref_nos.val()); 
  var rdocs = new Array(); 
  var rnos = new Array(); 
  ref_docs.each(function() { rdocs.push($(this).val()); } ); 
  ref_nos.each(function() { rnos.push($(this).val()); } );                               
  $('#r_doctor').val(rdocs.join(";")); 
$('#r_doctor_ohip').val(rnos.join(";")); }

- 此函数返回错误,指出“ref_docs”和“ref_nos”未定义。

2 个答案:

答案 0 :(得分:1)

我认为它试图在其他页面上使用jQuery在当前页面上找到“#r_docs”。

尝试:

jQuery(opener.document).find("#r_docs").append(html);

<强>更新

我创建了index.html:

<!DOCTYPE html>
<html><head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title> - jsFiddle demo</title>
  <script type="text/javascript" src="http://code.jquery.com/jquery-1.5.2.js"></script>
  <script type="text/javascript">
  window.jQuery = jQuery;
  function openChild ()
  {
      var mychildwin = window.open("child.html");
  }
  </script>
  </head>
<body>

<input type="button" value="click" onclick="openChild();" />

<div id="r_docs">
Redocs here.
</div>
</body>
</html>

和child.html:

<!DOCTYPE html>
<html><head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title> - jsFiddle demo</title>
  <script type="text/javascript" src="http://code.jquery.com/jquery-1.5.2.js"></script>
  <script type="text/javascript">
  function AddOtherRefDoc(name, number) {
        var remove = "<a href='javascript:void(0);' onclick='removeRefDoctor(this)'>Remove</a>";
        var html = "<li><b> Referral Doctor: </b>"+name+"<b>, Referral No: </b>"+number+ " " +remove+" <input type='text' name='ref_docs' value='"+name+"'></input><input type='text'  name='ref_nos' value='"+number+"'></input></li>";
        jQuery(opener.document).find("#r_docs").append(html);
    }
  </script>
  </head>
<body>

<input type="button" value="click" onclick="AddOtherRefDoc('name', 42);"/>

</body>
</html>

<强> UPDATE2:

更新函数中的

document.updatedelete没有属性ref_docs和ref_nos。

尝试:

jQuery("#updatedelete")
    .find('input[name="ref_docs"], input[name="ref_nos"]')

您的表单在哪里

<form id="updatedelete" ... >

答案 1 :(得分:1)

访问DOM元素的函数不正确。 updatedelete不是document的属性,访问ref_docsref_nos属性也不会自动构建input元素的集合。既然你已经使用了jQuery,试试这个:

var ref_docs = $('input[name="ref_docs"]');
var ref_nos = $('input[name="ref_nos"]');

这将为您提供允许您访问输入的数组(或至少类似数组)对象:

var rdocs = new Array();
var rnos = new Array();

ref_docs.each(function() { rdocs.push($(this).val()); } );
ref_nos.each(function() { rnos.push($(this).val()); } );

$('#r_doctor').val(rdocs.join(";"));
$('#r_doctor_ohip').val(rnos.join(";"));