Установите флажок для настройки страницы в UCM - добавьте флажки для метаданных
Я хочу, чтобы пользователь мог выбрать несколько опций для одних метаданных, и нам нужно предоставить флажки для них. Я изменил соответствующее включение и добавил сценарий 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 ответа
Я могу отображать флажки и назначать метаданные через запятую, теперь мне остается только отображать флажки, когда пользователь вызывает форму обновления метаданных.
<$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$>
Я полагаю, ваша проблема в этой строке:
xTranslateTo = value;
IDOC работает на стороне сервера, поэтому все переменные метаданных недоступны в JS на стороне клиента. Прямо сейчас ваш скрипт просто устанавливает значение локальной переменной JS с именем "xTranslateTo", ничего больше.
Вам нужно создать скрытое поле 'xTranslateTo' и заполнить его в своем JS вместо этой локальной переменной. Как только это скрытое поле отправлено во время отправки, оно будет проанализировано на стороне сервера и помещено в соответствующее метаполе.
Конечно, это также потребует дополнительного анализа в IDOC для установки флажков ранее выбранных языков.