2016-04-06 14 views
2

を使ってStruts2の自動入力補完タグの値の変化を検出します。私のアプリケーションでは、Struts 2 autocompleterタグを使用する必要があります。そのために私はstruts2-dojo-plugin-2.3.1.2.jar jarファイルを使用しました。値が変更されたらオートコンプリートから値を取得する必要があります。私はonchangeイベントを使ってみましたが、動作しませんでした。ここに私のコードです:は、私はStrutsの2アプリケーションに取り組んでいますjavascriptやjqueryの

<%@taglib uri="/struts-dojo-tags" prefix="sx"%> 
<html> 
<head> 
<script type="text/javascript"> 
function abc() { 
    var a = dojo.widget.byId("country"); 
    var value1 = a.getSelectedValue(); 
    document.getElementById("myText").value = value1; 
} 
</script> 
<sx:head /> 
</head> 
<body> 
<sx:autocompleter name="country" 
id="country" onchange="abc();" list="cricketNations" /> 
</body> 
</html> 

私はこれをどのように達成しますか?この問題を解決するのに役立ちます。あなたはHTMLを使用することができない場合があります

+1

なぜjqueryコードを使用しませんでしたか? –

+0

Jqueryコードは何ですか? –

+0

スクリプト用のjqueryコードまたはjqueryコード。 –

答えて

2

struts2-dojo-pluginは推奨されません。 struts2-jquery-pluginを使用する必要があります。

<%@ taglib prefix="s" uri="/struts-tags"%> 
<%@ taglib prefix="sj" uri="/struts-jquery-tags"%> 
<html> 
    <head> 
    <sj:head jqueryui="true"/> 
    </head> 
    <body> 
    <div id="myText" class="result ui-widget-content ui-corner-all"></div> 

    <sj:autocompleter name = "country" 
         id = "country" 
      onChangeTopics = "autocompleteChange" 
        list = "%{cricketNations}" /> 
    <script> 
    $.subscribe('autocompleteChange', function(event, data) { 
     var ui = event.originalEvent.ui; 
     var message = ui.item.value; 
     if (ui.item.key) { 
     message = '('+ ui.item.key +') '+message; 
     } 
     $('#myText').html('&lt;b&gt;'+message+'&lt;/b&gt;'); 
    }); 
    </script> 

    </body> 
</html> 
+0

恐ろしい解決策。 Dojoのオートコンプリートよりも優れています。非常に@RomanC –

+0

もう一つ質問ありがとうございます。クリックオンボタンで選択した値を取得する場合はどうなりますか?それをどうやって得るのですか? 'document.getElementById()'はこれに対応しますか? –

+0

clickイベントを購読するために使用できる 'onClickTopics'属性があります。私は[タブのナビゲーション](http://stackoverflow.com/a/21266903/573032)に使用しました。 –

0

は、Dojoウィジェットと属性、あなたがイベントにサブスクライブするdojo topicsを使用する必要があります。値がsx:autocompleterのために選択されている場合

<%@taglib uri="/struts-dojo-tags" prefix="sx"%> 
<html> 
<head> 
<script type="text/javascript"> 

    dojo.event.topic.subscribe("/countryName", function(value, key, text, widget){ 
     alert('inside onchange'); 

     document.getElementById("myText").value = value; 

    }); 

</script> 
<sx:head /> 
</head> 
<body> 
<sx:autocompleter name="country" valueNotifyTopics="/countryName" list="cricketNations" /> 
</body> 
</html> 

、トピックが公開されます。 autocompleterの文書hereを参照してください。

+0

このソリューションと呼ばれる@RoshanYengul ' –

+0

私の悪い、私は問題を引き起こしていた通知文字列として "/国"を使用しました。更新されたコードを試してください。 –

+0

コードを更新してもまだ動作しません。 –

関連する問題