Подключение автозаполнения dojo к функции javascript - PullRequest
1 голос
/ 26 декабря 2011

Я пытаюсь вызвать функцию сценария java, когда выбранное значение в автозаполнении Dojo изменяется, но я не могу этого сделать.

Во-первых, потому что стандартный атрибут onchange здесь не работает, так как это не стандартный компонент HTML.

Во-вторых, я нашел эту документацию (http://dojotoolkit.org/reference-guide/quickstart/events.html#connecting-to-a-dom-event), и она должна решить мою проблему. Но почему-то я все еще не могу подключиться к функции JavaScript.

Вот пример страницы, через которую я пытаюсь это проверить.

JSP:

<s:form id="form">
    <sd:autocompleter id="try" list="sampleList"/>
</s:form>

Файл JS:

dojo.connect(dojo.byId("try"),"onchange", tryAlert);

function tryAlert(){
    alert('successful');
}

Я не знаю, что я неправильно истолковал из документации.

Пожалуйста, сообщите.

Спасибо !!

Ответы [ 2 ]

2 голосов
/ 28 декабря 2011

Вот что я в итоге сделал. Для тех, кто все еще находится в подобной ситуации, это будет полезно.

В файле jsp сделайте это:

<s:form id="form">
    <s:hidden id="chngd"/>
    <sd:autocompleter id="try" list="sampleList" valueNotifyTopics="topic"/>
    ///////////
    //Here you can put more autocompleters if you need them , Like I needed them
    ///////////
</s:form>

В файле js сделайте следующее:

dojo.event.topic.subscribe("topic", function(){
    dojo.byId('chngd').value='try';// I have set the value of the hidden field to desired value here....
    //whatever more you want to do....
});

//////////
//Here there would be a subscription (similar to above) for each autocompleter you have put in your jsp.
//////////

Итак, что здесь произойдет, так это то, что всякий раз, когда изменяется автозаполнение, он уведомляет или публикует тему для прослушивания слушателями. Теперь функция subscribe в java-скрипте будет прослушивать соответствующую «тему», и когда эта тема будет опубликована, subscribe выполнит внутри нее функцию javascript.

Таким образом, всякий раз, когда автозаполнение изменяется, вызывается соответствующая функция javascript, таким образом, мы получаем эффект - onchange="javascript function" -.

Если у вас все еще проблемы, обратитесь за помощью:).

0 голосов
/ 26 декабря 2011

Хорошо, я полагаю, компонент Struts для "autocompleter" - это dijit.form.FilteringSelect в dojo.Вы найдете его документацию по адресу http://dojotoolkit.org/api.. Открыв дерево, перейдите по пути dijit / form / FilteringSelect и разверните заголовок «Сводка по событию».

Вы найдете список расширений.очки (скажем, события ...) виджет принимает.Правильный для вас называется "onChange" (обратите внимание на заглавную букву C).

Кроме того, виджеты dojo можно найти по id через dijit.byId ("yourId") - dojo.byId предназначен для обычные узлы dom.

Итак, для использования точки расширения onChange вы должны сделать:

<s:form id="form">
    <sd:autocompleter id="try" list="sampleList">
        <script type="dojo/method" event="onChange" args="newValue">
            alert('successful');
        </script>
</s:form>

или ... если вы предпочитаете способ javascript:

dojo.ready(function(){
    dijit.byId("try").onChange = function(newValue) {
        alert("Changed to new value", newValue);
    }
}   
...