定义的select如下:
<td><select id ="selModel" onchange="javascript:SelectModelChange();" style ="width:160px;"> <option value="Citizen_Policeman02.Xpc" title="../model/Citizen_Policeman.png">警察</option> <option value="Citizen_Female01.Xpc" title="../model/Citizen_Female.ico">市民</option> <option value="Car.xpc" title="../model/Car.png">汽车</option> <option value="Airplane.xpc" title="../model/Airplane.png">飞机</option> <option value="Ship.fpc" title="../model/Ship.png">轮船</option> <option value="" title ="../model/More.png" onclick ="javascript:SelectMoreModel();">更多...</option> </select> </td>
在 <script>中写的方法:
function SelectMoreModel() {
var sel = document.getElementById('selModel');
var value = showModalDialog("ModelList.aspx?rand=" + GetRandom(), "", "dialogWidth:250px; dialogHeight:500px; status:0; scroll:0;");
alert(value);
if (value != null) {
var opt = document.createElement('option');
opt.setAttribute('value', value);
opt.innerText = value;
opt.selected = true;
sel.appendChild(opt);
}
document.getElementById("ScaleFactor").value = "0.2";
document.getElementById("Height").value = "12";
document.getElementById("Speed").value = "10";
document.getElementById("TurnSpeed").value = "90";
}
我想在点击“更多...”选项的时候跳转到
ModelList.aspx页面,选择一个模型,然后返回一个值给value,这个值就是新增<option>的值,但是运行时不起作用。
function SelectMoreModel() {
var sel = document.getElementById('selModel');
//此处修改
var value = showModalDialog("ModelList.aspx?rand=" + GetRandom(), window, "dialogWidth:250px; dialogHeight:500px; status:0; scroll:0;");
document.getElementById("ScaleFactor").value = "0.2";
document.getElementById("Height").value = "12";
document.getElementById("Speed").value = "10";
document.getElementById("TurnSpeed").value = "90";
}
//
function Picker(url) {
//取得传递进来的参数 window
var parentWin =window.dialogArguments;
var sel = parentWin.document.getElementById('selModel');
var opt = parentWin.document.createElement('option');
opt.setAttribute('value', value);
opt.innerText = value;
opt.selected = true;
sel.appendChild(opt);
window.close();
}
showModalDialog 这个是什么 能收到返回值?
这是跳到另一个页面,ModelList.aspx,代码如下:
<html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>模型列表</title> <link href="../css/style.css" rel="stylesheet" type="text/css" /> <script language="javascript" type="text/javascript"> function Picker(url) { window.returnValue = url; window.close(); } </script> </head> <body> <form id="form1" runat="server"> <div style="width: 100%; height: 500px; overflow-y: auto;"> <asp:DataList ID="DataList1" runat="server" RepeatColumns="4" RepeatDirection="Horizontal" > <ItemTemplate> <table> <tr> <td align="center" valign="middle"> <a href="#"> <img src="<%#Eval("ImageUrl") %>" style="width: 48px; height: 48px; border: 0;" onclick="Picker('<%#Eval("FileName") %>');" /> </a> </td> </tr> </table> </ItemTemplate> </asp:DataList> </div> </form> </body> </html>
option 没有 onclick 事件
你可以在 SelectModelChange 方法里调用SelectMoreModel
哈哈,这思路好,我试试。
额,不太对,这样我选择“更多...”选项时达不到效果。
@pengjw:
SelectModelChange 里判断一个 下拉框的值,如果为空就执行 SelectMoreModel
建议少用服务端控件,耗用系统资源大。 我的思路:
点' 更多 .. ' 弹出 层(记录更多的选择项 的 .HTML) 选完后点确定 记录cookie值 ,在 调用页 调用COOKIE 动态添加<option>,弹出层个人感觉更美观, 引用 即可