在UCM中检入页面自定义 - 添加元数据复选框

时间:2012-11-09 12:32:08

标签: oracle11g oracle-ucm

我想允许用户为一个元数据选择多个选项,我们需要提供相同的复选框。我已经修改了相应的include并添加了java脚本,但是有些如何将值分配给元数据: 我修改了include并添加了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$>

任何人都可以对我出错的地方有所了解

2 个答案:

答案 0 :(得分:0)

我想你的问题就在这一行:

xTranslateTo = value;

IDOC正在服务器端运行,因此客户端的JS中无法访问所有元数据变量。现在你的脚本只是设置名为'xTranslateTo'的本地JS变量的值,没有别的。

您需要创建隐藏字段'xTranslateTo'并在JS中填充它而不是此局部变量。一旦在提交期间发送了这个隐藏字段,它将在服务器端解析并放到相应的元字段中。

当然,它还需要在IDOC上进行额外的解析,以设置以前选择的语言的复选框。

答案 1 :(得分: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 –>English<!– end addition –><input type="checkbox"  name="ucmlang"  id = "English" onclick="boxFunc()">
<td><!– addition –>French<!– end addition –><input type="checkbox"  name="ucmlang"  id = "French" onclick="boxFunc()"></td>
<td><!– addition –>Italian<!– end addition –><input type="checkbox"  name="ucmlang"  id = "Italian" onclick="boxFunc()"></td>
<td><!– addition –>German<!– end addition –><input type="checkbox"  name="ucmlang"  id = "German" onclick="boxFunc()"></td>
<td><!– addition –>Japanese<!– end addition –><input type="checkbox"  name="ucmlang"  id = "Japanese" onclick="boxFunc()"></td>
</tr>
<$else$>
<$include super.std_nameentry_row$>
<$endif$>