Javascript 使用jQuery(1.8)将dojo combobox(1.8.1版)作为行元素之一动态添加行
我正在尝试使用jQuery动态插入行。除了combobox没有出现在行中之外,它可以很好地处理以下代码。我已经解析了组合框,但它仍然没有出现,并在行中显示“Design Abbr[Widget dijit.form.combobox,solutionabbr]”。事实上,我希望这里有一个组合框。谁能帮我解决这个问题。我对jquery和dojo都使用1.8版本Javascript 使用jQuery(1.8)将dojo combobox(1.8.1版)作为行元素之一动态添加行,javascript,jquery,dojo,html-table,Javascript,Jquery,Dojo,Html Table,我正在尝试使用jQuery动态插入行。除了combobox没有出现在行中之外,它可以很好地处理以下代码。我已经解析了组合框,但它仍然没有出现,并在行中显示“Design Abbr[Widget dijit.form.combobox,solutionabbr]”。事实上,我希望这里有一个组合框。谁能帮我解决这个问题。我对jquery和dojo都使用1.8版本 var maxcount = 0; require(["dojo/parser", "dojo/dom", "dojo/store/M
var maxcount = 0;
require(["dojo/parser", "dojo/dom", "dojo/store/Memory", "dijit/form/ComboBox", "dojo/domReady!"],
function(parser, dom, Memory, ComboBox){
this.addBlock = function() {
maxcount += 1;
var stateStore = new Memory({data: [{name:"Alabama", id:"AL"},
{name:"Alaska", id:"AK"},{name:"Armed Forces the Americas", id:"AA"},
{name:"California", id:"CA"},{name:"Connecticut", id:"CT"}]});
var comboBoxId = "solutionAbbr"+maxcount;
var comboBox = new ComboBox({id: comboBoxId, name: "solutionAbbr",
value: "California",store: stateStore,searchAttr: "name"}, "stateSelect");
//parser.parse.then(function(comboBox) {document.getElementById("solutionAbbr"+maxcount)});
parser.parse(dijit.byId(comboBoxId));
//alert(dijit.byId(comboBoxId).get('value'));
$('<tr id="idForNewRow'+maxcount+'">'
+'<td colspan="4">'
+'<table id="idForBorder">'
+'<tr class="even">'
+'<th align="left"><font color="red">Design Abbr</font></th>'
+'<td align="left" valign="bottom" colspan="3">'
+comboBox+'</td>'
+'</tr>'
+'</table></td></tr><tr><td colspan="4"><a href="javascript:removeRow('
+maxcount+')">Remove</a>').insertAfter("[id*=idForNewRow]:last");
}
});
var maxcount=0;
require([“dojo/parser”、“dojo/dom”、“dojo/store/Memory”、“dijit/form/ComboBox”、“dojo/domReady!”),
函数(解析器、dom、内存、组合框){
this.addBlock=函数(){
maxcount+=1;
var stateStore=新内存({data:[{name:“Alabama”,id:“AL”},
{姓名:“阿拉斯加”,id:“AK”},{姓名:“美洲武装部队”,id:“AA”},
{姓名:“加利福尼亚”,id:“CA”},{姓名:“康涅狄格”,id:“CT”}];
var comboBoxId=“solutionAbbr”+maxcount;
var comboBox=new comboBox({id:comboBoxId,名称:“solutionAbbr”,
值:“California”,存储:stateStore,searchAttr:“name”},“stateSelect”);
//parser.parse.then(函数(组合框){document.getElementById(“solutionAbbr”+maxcount)});
parser.parse(dijit.byId(comboBoxId));
//警报(dijit.byId(comboBoxId.get('value'));
$(''
+''
+''
+''
+“设计缩写”
+''
+组合框+“”
+''
+'')。插入后面(“[id*=idForNewRow]:last”);
}
});
在插入中,必须使用comboBox.domNode::
$('<tr id="idForNewRow'+maxcount+'">'
+'<td colspan="4">'
+'<table id="idForBorder">'
+'<tr class="even">'
+'<th align="left"><font color="red">Design Abbr</font></th>'
+'<td align="left" valign="bottom" colspan="3">'
+comboBox.domNode+'</td>'
+'</tr>'
+'</table></td></tr><tr><td colspan="4"><a href="javascript:removeRow('
+maxcount+')">Remove</a>').insertAfter("[id*=idForNewRow]:last");
$(“”
+''
+''
+''
+“设计缩写”
+''
+comboBox.domNode+“”
+''
+'')。插入后面(“[id*=idForNewRow]:last”);
此外,如果手动将其放置在页面上,还可以从新的ComboBox contstructor中取出“stateSelect”。这就是当您希望小部件将自身放置在页面上时放置domid的位置
另外,您不应该使用parser.parse命令,而应该在将应用程序startup插入页面::comboBox.startup()后调用它
编辑(由于comboBox.domNode创建了一个节点对象,因此上面的编辑将不起作用)::
为了让它更简单,我只想颠倒顺序。首先添加html,然后创建小部件,小部件将能够将自己添加到页面中
$('<tr id="idForNewRow' + maxcount + '">' + '<td colspan="4">' +
'<table id="idForBorder">' +
'<tr class="even">' +
'<th align="left"><font color="red">Design Abbr</font></th>' +
'<td align="left" valign="bottom" colspan="3" id="select' + maxcount + '"></td>'+
'</tr>'+
'</table></td></tr><tr><td colspan="4">'+
'<a href="javascript: removeRow('+maxcount+')">Remove</a>').insertAfter("[id*=idForNewRow]:last");
var stateStore = new Memory({data: [{name:"Alabama", id:"AL"},
{name:"Alaska", id:"AK"},
{name:"Armed Forces the Americas", id:"AA"},
{name:"California", id:"CA"},
{name:"Connecticut ", id:"CT"}]});
var comboBoxId = "solutionAbbr"+maxcount;
var comboBox = new ComboBox({id: comboBoxId, name: "solutionAbbr",
value: "California",store: stateStore,searchAttr: "name"}, "select"+maxcount);
comboBox.startup();
<代码>$(''+''+
'' +
'' +
“设计缩写”+
''+
''+
''+
'')。插入后面(“[id*=idForNewRow]:last”);
var stateStore=新内存({data:[{name:“Alabama”,id:“AL”},
{姓名:“阿拉斯加”,id:“AK”},
{姓名:“美洲武装部队”,id:“AA”},
{姓名:“加利福尼亚”,id:“CA”},
{名称:“康涅狄格州”,id:“CT”}]});
var comboBoxId=“solutionAbbr”+maxcount;
var comboBox=new comboBox({id:comboBoxId,名称:“solutionAbbr”,
值:“California”,存储:stateStore,searchAttr:“name”},选择“+maxcount);
comboBox.startup();
如您好,谢谢您的帮助。我插入了comboBox.domNode而不是comboBox。现在,当新行出现时,单击“添加行”按钮,它会显示“[object HtmlLevel]”(之前显示的是[Widget dijit.form.ComboBox,solutionAbbr1]”)。有什么提示吗?同样根据您的建议,我已经删除了“stateSelect”“从新的组合框contstructor。但此时,我主要关心的是在页面上创建新行时显示此组合框。当前在新的动态行中,我得到“[object HtmlDevice]”。请检查我的代码,并让我知道任何解决方案。我是新手,请查看我刚刚添加的帖子的第二部分。改用这种方法会更容易