js 弹出框返回参数

本文介绍如何在JSP页面中实现弹出对话框进行手机号输入,并将数据返回到主页面的方法。提供了两种实现方式:使用showModalDialog适用于简单交互;使用window.open结合特定JS处理更复杂的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在做一个jsp的页面,然后又弹出一个对话框,并且把输入框的值返回到文本中。具体代码如下:

1  父页面

<%request.setCharacterEncoding ("GBK") ;%>
<%@page contentType="text/html; charset=gb2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<script type="text/javascript">
function openwindow()
    
var temp=  window.showModalDialog("NewBox.jsp",window,"status:no;scroll:no;dialogWidth:235px;dialogHeight:150px");
    
if(temp!=undefined)
        document.all.phone_number.value 
+= temp+",";
}
             

</script>
  
<head>
    
<title>欢迎您!</title>
    
<script language="Javascript" src="/js/validate.js"></script>
  
</head>
  
  
<body>
    
<form name="form" method="post" action="RegisterAction.jsp" onSubmit="return Validator.Validate(this,2);">
    
<table table width="50%" border="1" align="center" cellpadding="4" bordercolor="#C0C0C0" bordercolorlight="#C0C0C0" bordercolordark="#FFFFFF" bgcolor="#EEEEEE">
      
<tr>
        
<td align="right">请输入手机号码:</td>
        
<td align="left">
        
<label><font size="3" color="red">
          
<input type="text" dataType="Mobile" msg="手机号码不正确"  name="phone_number" id="phone_number"/>
        
<input type="button" name="add" value="添加" onclick="openwindow()"/>&nbsp;* 必填</font>&nbsp;[多个号码以“,”分割]</label>
        
</td>
      
</tr>
      
<tr>
        
<td align="right">请输入短信内容:</td>
        
<td align="left">
          
<textarea name="contents" cols="30" rows="5"></textarea>
        
</td>
      
</tr>
      
<tr>
        
<td align="right">
        
<label>
          
<input type="submit" name="Submit" value="提&nbsp;&nbsp;交"/>
        
</label>
        
</td>
        
<td align="left">       
        
<label>
        
<input type="reset" name="Reset" value="重&nbsp;&nbsp;置"/>
        
</label>
        
</td>
      
</tr>
    
</table>
  
</form>
  
</body>
</html>

 2  子对话框页面

<%request.setCharacterEncoding ("GBK") ;%>
<%@page contentType="text/html; charset=gb2312"%>
<html>
  
<head >
    
<title>手机号码输入框</title>
    
<script language="Javascript" src="/js/validate.js"></script>
  
</head>                                
                   
  
<body>
    
<FORM method=post name=form1 action="" onSubmit="return Validator.Validate(this,2);">
       请输入手机号码:
<INPUT type=text name=inboxname dataType="Mobile" msg="手机号码不正确"><br>
      
<INPUT type="button" name=inputboxbt value=确定 onclick="window.returnValue=document.all.inboxname.value;window.close();">
    
</FORM>
   
  
</body>

3  在这里要注意的是,如果弹出的对话框内容比较多涉及到翻页则不能用showModalDialog了,因为里面翻页时会弹出新的页面。所以在这里我又用了window.open(),可是又有新的情况了,就是参数传回来不方便。但网上高手毕竟还是多,今天看到别人的一个例子受到了点启发,现在把我自己写的帖出来,以供大家参考。

mobieList.jsp里的js代码如下:

function openListwindow() 
    window.open(
"mobieSelect.jsp"'newwindow''height=500, width=700, top=0, left=0, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no, status=no');
}

mobieList.jsp里的文本代码如下:

<table table width="60%" border="1" align="center" cellpadding="4" bordercolor="#C0C0C0" bordercolorlight="#C0C0C0" bordercolordark="#FFFFFF" bgcolor="#EEEEEE">
              
<tr>
                
<td align="right">请输入手机号码:</td>
                
<td align="left">
                
<label><font size="3" color="red">
                  
<input name="phnumber" type="text" id="phnumber" size="35"/>
               
<img name="imageField" src="/image/mnu_filter.gif" width="16" height="16" border="0" alt="添加"  onclick="openListwindow()">&nbsp;* 必填</font>&nbsp;[多个号码以“,”分割]</label>
                
</td>
              
</tr>
              
<tr>
                
<td align="right">请输入短信内容:</td>
                
<td align="left">
                  
<textarea name="contents" cols="35" rows="5"></textarea>&nbsp;[200个汉字以内]
                
</td>
              
</tr>
              
<tr>
                
<td align="right">
                
<label>
                  
<input type="submit" name="Submit" value="提&nbsp;&nbsp;交"/>
                
</label>
                
</td>
                
<td align="left">       
                
<label>
                
<input type="reset" name="Reset" value="重&nbsp;&nbsp;置"/>
                
</label>
                
</td>
              
</tr>
        
</table>

mobieSelect.jsp代码如下:

 

<script language="javascript" type="text/javascript">

function getSelect(oSrc){
    
var boxes = document.getElementsByName("rowId");   
    
var str = "";
    isCheck 
= isChecked(oSrc);
    
if(isCheck == true){
        
for (var i = 0; i < boxes.length; i++)   
        
{   
            
if (boxes[i].checked)   
            
{   
                str 
+= boxes[i].value+",";   
            }
   
        }

        
var str_2 = str.substr(0,str.length-1);
        window.opener.form.phnumber.value 
= str_2;
        
//return str_2;
    }
else{
        alert(
"请选择要发短信的手机号码!");
    }

}


function isChecked(oSrc){
    oSrc 
= eval(oSrc).rowId;
    
if(oSrc!=null)
    
{
        
for (i=oSrc.length-1;i>=0;i--){
            
if (oSrc[i].checked){return true;}
        }

        
if (oSrc.checked){return true;}
    }

    
return false;
}


</script>
<html>
    
<head>
        
<title>手机号码选择页面!</title>
    
</head>
<body>
    
<form name="handle" method="post" action="">
        
<table width="80%" border="1" align="center" cellpadding="4" bordercolor="#C0C0C0" bordercolorlight="#C0C0C0" bordercolordark="#FFFFFF" bgcolor="#EEEEEE">
            
<tr>
              
<td align="center" ><font style="font-size:16px"><input type="checkbox" name="all" value="checkbox"  onclick="chkClick(this , handle)"></font></td>
              
<td align="center"><font style="font-size:16px">手机号码</font></td>
              
<td align="center"><font style="font-size:16px">手机用户</font></td>
            
</tr>
            
<%
            
//声明分页变量并初始化
            
//当前页码值,最小索引值:1
            
int pageNo = 1;
            
//每页面显示的资讯条数(行数)
            
int row = 10;
            
//最大显示页数
            
int MAX_PAGE_NUM=0;
            
//最大每页显示条数
            
int MAX_ROWCOUNT=15;
            
//总记录数
            
int COUNT = 0;
            
            
//从请求中获取分页变量的值
            
String reqNo=request.getParameter("pageNo");
            
String reqRow=request.getParameter("row");
            
            MobieNumberService mns 
= new MobieNumberService();
            MAX_PAGE_NUM 
= mns.getPageMobieInfor(row);
            
            
if(!StringUtils.isEmpty(reqNo) && NumberUtils.isNumber(reqNo) && Integer.parseInt(reqNo)>1){
                
//分页数不超过 MAX_PAGE_NUM 页,若需要超过 MAX_PAGE_NUM 页,则修改 MAX_PAGE_NUM
                
if(Integer.parseInt(reqNo)<=MAX_PAGE_NUM)
                    pageNo
=Integer.parseInt(reqNo);
                
else
                    pageNo
=MAX_PAGE_NUM;
            }
            
if(!StringUtils.isEmpty(reqRow) && NumberUtils.isNumber(reqRow) && Integer.parseInt(reqRow)>1){
                
//每页显示的条目在 MAX_ROWCOUNT 行以内,若需要超过 MAX_ROWCOUNT 行,则修改 MAX_ROWCOUNT
                
if(Integer.parseInt(reqRow)<=MAX_ROWCOUNT)
                    row
=Integer.parseInt(reqRow);
                
else
                    row
=MAX_ROWCOUNT;
            }
            
            
int startNum=(pageNo - 1* row;
            
/** 以上为翻页程序 **/
            
            List li 
= new ArrayList();
            try
            {
                li 
= mns.selectMobieInfor(startNum,row);
                COUNT 
= mns.getCountMobieInfor();        
            }
            catch(Exception 
exp) {
                
//exp.printStackTrace();
            }
            Iterator it 
= li.iterator();
            
while(it.hasNext()) {
                MobieNumber mn 
= (MobieNumber) it.next();
             
%>
            
<tr>
                 
<td align="center"><input type="checkbox" name=rowId value="<%=mn.getMobie_number()%>"></td>
              
<td align="center">&nbsp;<%=mn.getMobie_number()%></td>
              
<td align="center">&nbsp;<%=mn.getMobie_user()%></td>
             
</tr>
           
<%%>
            
<tr>
               
<td colspan="3"><label>
                 
<input type="button" name="Submit3" value="确&nbsp;&nbsp;定" onclick="getSelect(handle);window.close();">&nbsp;&nbsp;
               
</label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<%
                    
//处理分页链接
                    out.println(
"共计:"+COUNT+"&nbsp;");    
                    
if(pageNo<MAX_PAGE_NUM)
                        out.println(
"<a href='mobieSelect.jsp?pageNo="+(pageNo+1)+"&amp;row="+row+"'>下页</a>&nbsp;");
                    
if(pageNo>1)
                        out.println(
"<a href='mobieSelect.jsp?pageNo="+(pageNo-1)+"&amp;row="+row+"'>上页</a>&nbsp;");
                    out.println(
"<a href='mobieSelect.jsp?pageNo=1&amp;row="+row+"'>首页</a>&nbsp;");
                    out.println(
"<a href='mobieSelect.jsp?pageNo="+MAX_PAGE_NUM+"&amp;row="+row+"'>末页</a>&nbsp;");
                    out.println(
""+pageNo+"/"+MAX_PAGE_NUM+"页<br/>");
             
%></td>
          
</tr>
        
</table>
    
</form>
</body>
</html>
两种方法适合在不同的情况下运用。在此记录下来。算是一点总结吧,呵呵。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值