复选框产生列表的问题。

fiendboy 2002-07-03 11:46:48
复选框产生列表的问题。

在当前窗口(父窗口)OPEN一个选择窗口(子窗口),选择窗口是复选列表,如果我选择了n个值,确定后返回到父窗口的表格里的文本框,且每个值赋值一行文本框,根据选择的n个值实时产生n行表。请问如何实现,谢谢!!
...全文
46 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
lanbor 2002-07-06
  • 打赏
  • 举报
回复
不会呀。动态产生的代码是可以做提交用的。虽然你在ie查看源文件里看不到。
做一个实验:
<body>
<form onsubmit="alert(myText.value);event.returnValue=false">
<div id=myDiv></div>
</form>

<script>
myDiv.innerHTML = "<input id=myText><br><input type=submit value=submit>";
</script>
</body>

至于我给你的代码。你还要改一下,让产生的输入框符合你的要求,比如name分别是什么,value分别是什么。




lanbor 2002-07-05
  • 打赏
  • 举报
回复
哦。那就改成这样吧:

main.html
---------------------------------------------------------------
<BODY onfocus="showText()">
<script language=javascript>
function setCookie(s,v)
{
var expires = new Date();
expires.setTime(expires.getTime() + 365*24*60*60*1000);
document.cookie= s + "=" + v + ";expries=" + expires.toGMTString();
}

function getCookie(s)
{
var startPoint = 0;
var endPoint = 0;
var isFound = false;
var cookieStr = document.cookie;
var i = 0;

s = s + "=";
while (i<cookieStr.length) {
startPoint = i;
endPoint = startPoint + s.length;

if (cookieStr.substring(startPoint,endPoint) == s) {
isFound = true;
break;
}
i++;
}

if (isFound == true) {
startPoint = endPoint;
endPoint = cookieStr.indexOf(";",startPoint);
if(endPoint < startPoint) endPoint = cookieStr.length;
return unescape(cookieStr.substring(startPoint,endPoint));
}
}

function showText()
{
mydiv.innerHTML = getCookie("tValue");
}

</script>
<div id=mydiv></div>
<input type="button" name="select" id="select" value="选择" onClick="var a=window.showModalDialog('test.htm','Calendar','dialogWidth:520px;dialogHeight:450px;');">
</BODY>

test.htm
---------------------------------------------------------------
<BODY>
<script>
function setCookie(s,v)
{
var expires = new Date();
expires.setTime(expires.getTime() + 365*24*60*60*1000);
document.cookie= s + "=" + v + ";expries=" + expires.toGMTString();
}

function getCookie(s)
{
var startPoint = 0;
var endPoint = 0;
var isFound = false;
var cookieStr = document.cookie;
var i = 0;

s = s + "=";
while (i<cookieStr.length) {
startPoint = i;
endPoint = startPoint + s.length;

if (cookieStr.substring(startPoint,endPoint) == s) {
isFound = true;
break;
}
i++;
}

if (isFound == true) {
startPoint = endPoint;
endPoint = cookieStr.indexOf(";",startPoint);
if(endPoint < startPoint) endPoint = cookieStr.length;
return unescape(cookieStr.substring(startPoint,endPoint));
}
}


function showCheck()
{
var h = "";
for(i=0;i<document.all.mycheck.length;i++)
if(document.all.mycheck[i].checked)
h += '<input value=' + document.all.mycheck[i].value + '><br>';

setCookie("tValue",h);
}
</script>
<input type=checkbox name=mycheck value=aaaaa>aaaaa
<input type=checkbox name=mycheck value=bbbbb>bbbbb
<input type=checkbox name=mycheck value=ccccc>ccccc
<br><br>
<button onclick="showCheck()">确 定</button>  <button onclick="window.close()">关 闭</button>
</BODY>
fiendboy 2002-07-05
  • 打赏
  • 举报
回复
lanbor(兰波) 兄:
请指教一下上述代码的原理,为什么产生列表后,没有随即产生输入框的代码,要是没有的话,我在父窗口提交时,就无法向数据库传递参数的值了。
fiendboy 2002-07-04
  • 打赏
  • 举报
回复
不是动态改变输入框的高度,是动态增加N行输入框,每个输入框对应一个值。
lanbor 2002-07-04
  • 打赏
  • 举报
回复
我不是很清楚你的:父窗口动态产生n行的输入框的确切含义,是说的输入框的高度?那你根据选了多少选项,让theText.rows=几就可以了呀。
fiendboy 2002-07-04
  • 打赏
  • 举报
回复
lanbor(兰波) :
首先感谢你的指教。但我想通过子窗口被选中的n个选项提交后在父窗口动态产生n行的输入框。
fiendboy 2002-07-04
  • 打赏
  • 举报
回复
好象是IE5.0不能支持‘opener’和‘parent’对象,但在IE5.5以上的版本运行正常,不知道有没有更好的解决办法?
lanbor 2002-07-04
  • 打赏
  • 举报
回复
main.htm
-------------------------------------------------------------------
<BODY onfocus="showText()">
<script language=javascript>
function setCookie(s,v)
{
var expires = new Date();
expires.setTime(expires.getTime() + 365*24*60*60*1000);
document.cookie= s + "=" + v + ";expries=" + expires.toGMTString();
}

function getCookie(s)
{
var startPoint = 0;
var endPoint = 0;
var isFound = false;
var cookieStr = document.cookie;
var i = 0;

s = s + "=";
while (i<cookieStr.length) {
startPoint = i;
endPoint = startPoint + s.length;

if (cookieStr.substring(startPoint,endPoint) == s) {
isFound = true;
break;
}
i++;
}

if (isFound == true) {
startPoint = endPoint;
endPoint = cookieStr.indexOf(";",startPoint);
if(endPoint < startPoint) endPoint = cookieStr.length;
return unescape(cookieStr.substring(startPoint,endPoint));
}
}

function showText() {
if(!getCookie("tValue")) document.all.theText.value="";
else document.all.theText.value=(getCookie("tValue"));
}
</script>
<textarea cols=30 rows=10 id=theText></textarea>
<input type="button" name="select" id="select" value="选择" onClick="var a=window.showModalDialog('test.htm','Calendar','dialogWidth:520px;dialogHeight:450px;');">
</BODY>

test.htm
----------------------------------------------------------------
<BODY>
<script>
function setCookie(s,v)
{
var expires = new Date();
expires.setTime(expires.getTime() + 365*24*60*60*1000);
document.cookie= s + "=" + v + ";expries=" + expires.toGMTString();
}

function getCookie(s)
{
var startPoint = 0;
var endPoint = 0;
var isFound = false;
var cookieStr = document.cookie;
var i = 0;

s = s + "=";
while (i<cookieStr.length) {
startPoint = i;
endPoint = startPoint + s.length;

if (cookieStr.substring(startPoint,endPoint) == s) {
isFound = true;
break;
}
i++;
}

if (isFound == true) {
startPoint = endPoint;
endPoint = cookieStr.indexOf(";",startPoint);
if(endPoint < startPoint) endPoint = cookieStr.length;
return unescape(cookieStr.substring(startPoint,endPoint));
}
}


function showCheck()
{
var s= "";
for(i=0;i<document.all.mycheck.length;i++)
if(document.all.mycheck[i].checked)
s += document.all.mycheck[i].value + "\n";
setCookie("tValue",s);

}
</script>
<input type=checkbox name=mycheck value=aaaaa>aaaaa
<input type=checkbox name=mycheck value=bbbbb>bbbbb
<input type=checkbox name=mycheck value=ccccc>ccccc
<br><br>
<button onclick="showCheck()">确 定</button>  <button onclick="window.close()">关 闭</button>
</BODY>
seabell 2002-07-04
  • 打赏
  • 举报
回复
showModalDialog我不是很熟
fiendboy 2002-07-04
  • 打赏
  • 举报
回复
我在父窗口打开子窗口的代码如下:

<input type="button" name="select" id="select" value="选择" onClick="var a=window.showModalDialog('test.htm','Calendar','dialogWidth:520px;dialogHeight:450px;');>

子窗口怎么才能实现返回父窗口,并自动产生行?
flyxing 2002-07-03
  • 打赏
  • 举报
回复
1:向表中添加行:
var tb= document.all("YourTableName");
var isrow=tb.insertRow(tb.rows.length);
2:向行中添加列:
var MaxCell =你要添加的列数
for(var i=0;i<MaxCell;i++)
isrow.insertCell(i);
3:得到父窗口的对象:
window.opener.…… //这样就可以对他进行操作了
seabell 2002-07-03
  • 打赏
  • 举报
回复
<script>
window.open("checked.htm","","");
</script>
<div id=mytable><table><tr><td></td><tr></table></div>

checked.htm
<script>
function settable()
{
j=0;str="<table>";
for(i=0;i<document.all.mycheck.length;i++)
if(document.all.mycheck[i].checked)
{
str+="<tr><td><input name=mytext"+j+" value="+document.all.mycheck[i].value+"></td></tr>";
j++;
}
str+="</table>";
opener.document.all.mytable.innerHTML=str;
}
</script>
<input type=checkbox name=mycheck value=1>1
<input type=checkbox name=mycheck value=2>2
<input type=checkbox name=mycheck value=3>3
<input type=button onclick=settable()>
seabell 2002-07-03
  • 打赏
  • 举报
回复
不知道是不是5.5以下不支持innerHTML
seabell 2002-07-03
  • 打赏
  • 举报
回复
不知道是不是5.5以下不支持innerHTML
fiendboy 2002-07-03
  • 打赏
  • 举报
回复
可是我这里有问题,是不是跟浏览器的版本有关?
我的版本是5.0的。
seabell 2002-07-03
  • 打赏
  • 举报
回复
<script>
window.open("checked.htm","","");
</script>
<div id=mytable><table><tr><td></td><tr></table></div>
这一段是父窗口代码。下面是子窗口代码。
我刚试了没问题
fiendboy 2002-07-03
  • 打赏
  • 举报
回复
我把代码拷过去仍不行,主要在子窗口提交时报错。说是“opener.document.all.mytable”不是对象。
seabell 2002-07-03
  • 打赏
  • 举报
回复
我的做法是把table用层套起来,再改变其中的innerHTML
你把我的代码拷过去不能运行吗?请说清楚些
fiendboy 2002-07-03
  • 打赏
  • 举报
回复
请教seabell(百合心) :
父窗口的源码正确写法是什么?为什么我不能正常执行?

87,996

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧