2012-11-09 15 views
0

我想允許用戶爲一個元數據選擇多個選項,並且我們需要提供相同的複選框。我已經修改了各自的include並添加了java腳本,但一些價值沒有得到分配給元數據: 我已經修改了包含和添加JS如下,但元數據沒有得到分配選定的值,任何一個可以告訴我我要去哪裏錯:在UCM中檢查頁面定製 - 爲元數據添加複選框

 <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$> 

任何一個可以拋出一些光在我要去哪裏錯了

回答

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$> 
0

我想ÿ我們的問題是這樣的:

xTranslateTo = value; 

IDOC運行在服務器端,因此所有的元數據變量都不能在客戶端的JS中訪問。現在你的腳本只是設置名稱爲'xTranslateTo'的本地JS變量的值,沒有別的。

您需要創建隱藏字段'xTranslateTo'並將其填充到JS中而不是此局部變量中。一旦這個隱藏的字段在提交期間被髮送,它將在服務器端被解析並放到相應的元字段中。

當然,它還需要額外解析IDOC以設置先前選定語言的複選框。

+0

你能告訴我如何將選定的值賦給隱藏字段'xTranslateTo'。 – user964819

+1

有許多方法可以實現像你的功能。 如果您使用11g,則可以使用標準功能進行多項選擇 - 只需將您的字段定義爲具有選項列表(在Configuration Manager中)即可。它可以基於視圖(數據庫表)或預定義列表。 如果你不能使用標準的方法(可以說因爲你的應用程序設計,你需要有確切的複選框,而不是列表) - 你可以再次將此字段定義爲基於視圖的選項列表,並編寫你自己的組件/ include/idoc自己分析模式值並將其顯示爲複選框。 –

+0

這裏有一個從視圖中獲取所有語言的例子,稱爲TranslationLanguagesView(語言和代碼是這個vew的字段): <! - $ getViewValuesResultSet(「TranslationLanguagesView」,「」,「」) - > <! - $ loop SchemaData - > \t <! - $ Language - > -
<! - $ endloop - > –

相關問題