0

コンボ ボックスの選択されたオプションのテキスト プロパティにアクセスしようとしています。次のコードは、これまでに到達した場所ですが、コードのエラーを認識できません。

<!DOCTYPE html>
<html >
<head>
<link rel="stylesheet" href="dijit/themes/claro/claro.css">
<style type="text/css">
table,td
{
border: 1px solid black;
}
td
{
height:30px;
vertical-align:center;
padding:15px;
}
.tableClass
{
    border:1px;
    border: 1px solid black;
}
</style>
<script src='dojo/dojo.js' data-dojo-config='parseOnLoad: true'></script>
<script>
//require(["dojo/parser", "dijit/form/FilteringSelect", "dojo/store/Memory"]);

</script>
<script type="text/javascript">
    dojo.require("dijit.form.ComboBox");
    function alterEntries()
        {
            //alert("in");
            document.getElementById('overlayName').value = dijit.byId('stateSelect').value;

            dojo.style("description", {
                display:"block",
            });
            dojo.style("overlayName", {
                display:"block",
            });
        }
        function submitEntries(ovlName,overlayDescription)
        {
            var textOfOvl = getSelectedText(ovlName);
            alert("overlayName " + ovlName + " overlayDescription " + overlayDescription);
        }

        function getSelectedText(elementId) 
        {
            var elt = document.getElementById(elementId);

            if (elt.selectedIndex == -1)
            {
                alert("null");
                return null;
            }

            return elt.options[elt.selectedIndex].text;
        }

    </script>

</head>

<body class="claro">
    <select id="stateSelect" data-dojo-type="dijit.form.ComboBox">
        <option value="AL">Alabama</option>
        <option value="AK">Alaska</option>
        <option value="AZ">Arizona</option>
        <option value="AR">Arkansas</option>
        <option value="CA">California</option>
    </select>
     <input name="overlayName" type="text" value="overlayName" id="overlayName"  style="display:none">
    <textarea name="description" cols="50" rows="3" id="description" style="display:none"></textarea>
    <p>
        <button onclick="alterEntries();">EDIT</button>
        <button onclick="submitEntries(document.getElementById('overlayName').value,document.getElementById('description').value);">SUBMIT</button>
    </p>


</body>

</html>

私は何がうまくいかないのかを理解しようとして頭を壊しています.誰かが私を助けてくれますか.どうもありがとう!

4

2 に答える 2

3

表示されたテキストを取得するには、選択したテキストは次のようになります。

function getSelectedText(el){
     var text = dijit.byId(el).get('displayedValue'),
     value = dijit.byId(el).get('value');
     alert(text);
     return text;
}

基本的なdijitチュートリアルを確認することをお勧めします。dijitsを使用する場合、document.getElementByIdはdijit.byIdとは非常に異なる結果をもたらします。

これも入力のわずかな修正です

 <input name="overlayName" type="hidden" value="stateSelect" id="overlayName">

また、私はあなたが使用することをお勧めします

dojo.byId('textId');

document.getElementByIdの代わりに

于 2012-12-20T04:51:58.483 に答える
1

あなたのコードは非常に奇妙です。行でわかるように

<input name="overlayName" type="text" value="overlayName" id="overlayName" style="display:none">

value 属性は に設定する必要がありますがstateSelect、 に設定することはできませんoverlayName

そして、機能のブラウザー変更実装での作業結果を確認するにはsubmitEntries:

function submitEntries(ovlName,overlayDescription)
{
    var textOfOvl = getSelectedText(ovlName);
    alert(textOfOvl);
}

コードの実際の変更を参照してください。

于 2012-12-19T19:49:54.553 に答える