0

ユーザーが 1 つのメタデータに対して複数のオプションを選択できるようにしたいので、同じものにチェック ボックスを提供する必要があります。それぞれのインクルードを変​​更し、Java スクリプトを追加しましたが、値がメタデータに割り当てられない方法がいくつかあります。次のようにインクルードを変​​更して JS を追加しましたが、選択した値がメタデータに割り当てられていません。どこが間違っているのか教えてください。

     <script type="text/javascript">
           function getSelected(Language) {
                                       var selected = new Array();
                                       var index = 0; for (var intLoop=0; intLoop < Language.length; intLoop++) {
                                       if (Language[intLoop].selected) {             index = selected.length;        
                                                                       selected[index] = new Object;    
                                                                       selected[index].value = Language[intLoop].value;          
                                                                        selected[index].index = intLoop;         }      }      
                                                                            return selected;
                                                                           }
function submit(selected)
{
var value =selected;
xTranslateTo = value;
}
</script>
<$if strEquals(fieldName, "xTranslateTo") and not (isInfo or isQuery)$>
<tr <$strTrimWs(inc("std_nameentry_row_attributes"))$>>
<td <$if captionFieldWidth$>width="<$captionFieldWidth$>"<$endif$> <$if isInfo$>align=right<$endif$>><$strTrimWs(inc(fieldCaptionInclude))$></td>
<td <$if isFieldInfoOnly$>colspan="100"<$endif$> <$if captionEntryWidth$>;width="<$captionEntryWidth$>"<$endif$>><$inc(fieldEntryInclude)$>

<INPUT TYPE=CHECKBOX  NAME="Language" VALUE="English">English
<INPUT TYPE=CHECKBOX  NAME="Language" VALUE="Italian">Italian
<INPUT TYPE=CHECKBOX  NAME="Language" VALUE="French">French
<INPUT TYPE=CHECKBOX  NAME="Language" VALUE="German" >German</td>
</tr>
 <a href="javascript:;" onclick=" getSelected()">
<$else$>
<$include super.std_nameentry_row$>
<$endif$>

どこが間違っているのか、誰にでも光を当てることができますか

4

2 に答える 2

0

チェック ボックスを表示し、カンマ区切りの値をメタデータに割り当てることができます。あとは、ユーザーがメタデータ フォームの更新を要求したときに、チェック ボックスを表示するだけです。

<$if strEquals(fieldName, "xLang") and not (isInfo or isQuery)$>
<script>
function boxFunc()
{
    var textval=document.getElementsByName('xLang')[0];
        var langs=document.getElementsByName("ucmlang");
        larray="";
            for(i=0;i<langs.length;i++)
          {
             if(langs[i].checked)
                   {
                     larray=larray+langs[i].id+",";
                   }
      }
           larray=larray.substring(0,larray.length-1);
          textval.value=larray;

}
</script>
<tr <$strTrimWs(inc("std_nameentry_row_attributes"))$>>
<td<$if captionFieldWidth$>width="<$captionFieldWidth$>"<$endif$> <$if isInfo$>align=right<$endif$>><$strTrimWs(inc(fieldCaptionInclude))$></td>
<td <$if isFieldInfoOnly$>colspan="100"<$endif$> <$if captionEntryWidth$>;width="<$captionEntryWidth$>"<$endif$>><$inc(fieldEntryInclude)$></td>
<td><!– addition –&gt;English<!– end addition –&gt;<input type="checkbox"  name="ucmlang"  id = "English" onclick="boxFunc()">
<td><!– addition –&gt;French<!– end addition –&gt;<input type="checkbox"  name="ucmlang"  id = "French" onclick="boxFunc()"></td>
<td><!– addition –&gt;Italian<!– end addition –&gt;<input type="checkbox"  name="ucmlang"  id = "Italian" onclick="boxFunc()"></td>
<td><!– addition –&gt;German<!– end addition –&gt;<input type="checkbox"  name="ucmlang"  id = "German" onclick="boxFunc()"></td>
<td><!– addition –&gt;Japanese<!– end addition –&gt;<input type="checkbox"  name="ucmlang"  id = "Japanese" onclick="boxFunc()"></td>
</tr>
<$else$>
<$include super.std_nameentry_row$>
<$endif$>
于 2012-11-16T06:29:36.190 に答える
0

あなたの問題はこの行だと思います:

xTranslateTo = value;

IDOC はサーバー側で実行されているため、クライアント側の JS ではすべてのメタデータ変数にアクセスできません。現在、スクリプトは「xTranslateTo」という名前のローカル JS 変数の値を設定しているだけです。

このローカル変数の代わりに、隠しフィールド「xTranslateTo」を作成し、JS に入力する必要があります。この非表示フィールドが送信中に送信されると、サーバー側で解析され、対応するメタフィールドに配置されます。

もちろん、以前に選択した言語のチェックボックスを設定するために、IDOC での追加の解析も必要になります。

于 2012-11-12T12:58:54.873 に答える