пример автоматического заполнения dojo не работает

#combobox #dojo

#поле со списком #dojo

Вопрос:

Я взял этот пример с сайта dojo. Однако у меня это не работает.

 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  

 <head>
    <style type="text/css">
        body, html { font-family:helvetica,arial,sans-serif; font-size:90%; }
    </style>
    <script src="http://ajax.googleapis.com/ajax/libs/dojo/1.6/dojo/dojo.xd.js"
    djConfig="parseOnLoad: true">
    </script>
    <script type="text/javascript">
        dojo.require("dijit.form.FilteringSelect");
        dojo.require("dojo.data.ItemFileReadStore");
    </script>
    <script type="text/javascript">
        dojo.addOnLoad(function() {
            var stateStore = new dojo.data.ItemFileReadStore({
                url: "../../_static/js//dijit/tests/_data/states.json"
            });
            var filteringSelect = new dijit.form.FilteringSelect({
                id: "stateSelect",
                name: "state",
                value: "KY",
                store: stateStore,
                searchAttr: "name"
            },
            "stateSelect");
        });
    </script>
    <link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/dojo/1.6/dijit/themes/claro/claro.css"
    />
</head>

<body class=" claro ">
    <input id="stateSelect">
    <p>
        <button onClick="alert(dijit.byId('stateSelect').get('value'))">
            Get value
        </button>
        <button onClick="alert(dijit.byId('stateSelect').get('displayedValue'))">
            Get displayed value
        </button>
    </p>
    <!-- NOTE: the following script tag is not intended for usage in real
    world!! it is part of the CodeGlass and you should just remove it when
    you use the code -->
    <script type="text/javascript">
        dojo.addOnLoad(function() {
            if (document.pub) {
                document.pub();
            }
        });
    </script>
</body>
  

Ответ №1:

Прежде всего, вам следует удалить этот код:

  <!-- NOTE: the following script tag is not intended for usage in real
    world!! it is part of the CodeGlass and you should just remove it when
    you use the code -->
    <script type="text/javascript">
        dojo.addOnLoad(function() {
            if (document.pub) {
                document.pub();
            }
        });
    </script>
  

И вторая проблема заключается в заполнении ItemFileReadStore. У вас действительно есть этот файл "../../_static/js//dijit/tests/_data/states.json" на вашем сайте? Если нет, вам следует создать его (или исправить путь к файлу) или использовать другой метод для заполнения ItemFileReadStore.