2011-03-01 65 views
4

我有我的页面上的dijit.form.Select:如何从dijit.form.Select获取选项文本?

<c:set var="qualId" value="${previous.qualification.id}" /> 
<select id="qualification" name="qualification" dojoType="dijit.form.Select" onchange="checkForPHD()"> 
    <option value="-1" label="      "> </option> 
    <c:forEach items="${requestScope.qualifications}" var="qualItem"> 
     <c:choose> 
     <c:when test="${qualId eq qualItem.id}"> 
      <option value="${qualItem.id}" selected = "selected">${qualItem.name}</option> 
     </c:when> 
     <c:otherwise> 
      <option value="${qualItem.id}">${qualItem.name}</option> 
     </c:otherwise> 
     </c:choose> 
    </c:forEach> 
</select> 

然后一些JavaScript,我试图用设置一些文本从选择框中选择该选项的文本;

function checkForPHD() {  
     dojo.byId('clazzPHDMessage').innerHTML = dojo.byId('qualification') 
      .attr('displayedValue'); 
    } 

我读到,.attr(“displayedValue”)是假设得到的dijit.form.Select所选选项的文本,但它似乎并没有做多少? .attr('value')得到了这个值,但我需要TEXT?

回答

14

您应该使用dijit.byId()来获取小部件实例。尝试使用此代码来获取选定的文本:

dijit.byId('qualification').attr('displayedValue') 
+0

上衣,干杯为 – 2011-03-01 17:22:16

0

看起来像你想要的是当前选择的选项(<option>THIS TEXT??</option>)的innerHTML。我认为这应该可以做到。使用getOptions遍历所有选择的选项并找到选定的选项,然后返回其innerHTML。我不知道dijit.form.Select是否有selectedIndex属性,但这也有帮助。

function getSelectedText() { 
    dojo.foreach(dijit.byId("qualification").getOptions(), function(opt, i) { 
    if (opt.selected) { 
     return opt.innerHTML; 
    } 
    }); 
} 
0

你应该首先尝试获得所选择的节点,然后得到你想要的属性,如下所示:

dijit.byId("qualification").getSelected().attr('innerHTML'); 
相关问题