Struts 2自动完成onchange无法正常工作

时间:2014-01-29 06:30:56

标签: jquery struts2 struts2-jquery

我在我的应用程序中使用js autocompleter标记。我的问题是,当我想在标签中使用onchange()函数时,它不起作用。 onchange()函数未触发。我该如何解决这个问题?

我的JSP

<script type="text/javascript"> 
  function change_origin_state() {
    alert("in autocompleter onchange"); 
    return true; 
  }
</script> 

<s:autocompleter list="al_state_nm" 
                 name="orgState" 
                 listValue="state_nm" 
                 listKey="state_cd" 
                 cssStyle="width:180px;height:20px" 
                 onchange="return change_origin_state();"
/>

1 个答案:

答案 0 :(得分:1)

使用autocompleter标记时请不要使用onchange属性。更好的方法是使用autocompleter topics代替。它们包装来自jQuery Ui autocompleter event的事件。

您可以在Struts2 jQuery Showcase中找到一些示例,如下所示,如何使用此主题。

JavaScript代码:

$.subscribe('autocompleteChange', function(event, data) {
    var ui = event.originalEvent.ui;
    var message = ui.item.value;
    if(ui.item.key) {
        message = '( '+ ui.item.key +' ) '+message;
    }
    $('#topics').html('<b>'+message+'</b>');
});
$.subscribe('autocompleteFocus', function(event, data) {
    var ui = event.originalEvent.ui;
    var message = ui.item.value;
    if(ui.item.key) {
        message = '( '+ ui.item.key +' ) '+message;
    }
        $('#topics').html('<u>'+message+'</u>');
});

$.subscribe('autocompleteSelect', function(event, data) {
    var ui = event.originalEvent.ui;
    var message = ui.item.value;
    if(ui.item.key) {
        message = '( '+ ui.item.key +' ) '+message;
    }
        $('#topics').html('<i>'+message+'</i>');
});

JSP中的代码:

<div id="topics" class="result ui-widget-content ui-corner-all"></div>
<s:url id="jsonlanguages" action="jsonlanguages"/> 
<sj:autocompleter 
            id="languages" 
            name="echo"
            label="Handle a Array"
            href="%{jsonlanguages}" 
            delay="50" 
            loadMinimumCount="2"
            onChangeTopics="autocompleteChange"
            onFocusTopics="autocompleteFocus"
            onSelectTopics="autocompleteSelect"
/>