如何从dijit.form.Select中获取选项文本?

时间:2011-03-01 16:10:45

标签: dojo

我的页面上有一个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将一些文本设置为从选择框中选择的选项的TEXT;

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

我读过.attr('displayedValue')假设从dijit.form.Select中的选定选项中获取文本,但它似乎没有做太多? .attr('value')得到了那些值,但是我需要TEXT吗?

4 个答案:

答案 0 :(得分:15)

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

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

答案 1 :(得分:0)

似乎你想要的是当前所选选项(<option>THIS TEXT??</option>)的innerHTML。我认为这应该可以解决问题。使用getOptions循环遍历所有select选项并找到所选选项,然后返回其innerHTML。我不知道dijit.form.Select是否有selectedIndex属性,但这也有帮助。

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

答案 2 :(得分:0)

您应首先尝试获取所选节点,然后获取所需的属性,如下所示:

dijit.byId("qualification").getSelected().attr('innerHTML');

答案 3 :(得分:0)

您可以尝试以下代码片段

  

dijit.registry.byId(“ regionList”)。value;

<select name="regionList" id="regionList" data-dojo-id="regionList" data-dojo-type="dijit/form/Select">
<option value="" selected="true">Select LoB</option>
<option value="Asia" >Asia</option>
<option value="Africa" >Africa</option>
</select>