<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <title>Liferay 7.2 - Change liferay-ui:input-localized XML with javascript</title>
  <link rel="self" href="https://liferay.dev/c/message_boards/find_thread?p_l_id=119785294&amp;threadId=119753847" />
  <subtitle>Liferay 7.2 - Change liferay-ui:input-localized XML with javascript</subtitle>
  <id>https://liferay.dev/c/message_boards/find_thread?p_l_id=119785294&amp;threadId=119753847</id>
  <updated>2026-04-04T10:31:14Z</updated>
  <dc:date>2026-04-04T10:31:14Z</dc:date>
  <entry>
    <title>RE: Liferay 7.2 - Change liferay-ui:input-localized XML with javascript</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=119795819" />
    <author>
      <name>Fabio Carvalho</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=119795819</id>
    <updated>2020-08-19T08:53:56Z</updated>
    <published>2020-08-19T08:53:56Z</published>
    <summary type="html">&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;&lt;strong&gt;I found a workaround that I will be quoting from my response in StackOverflow:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;After a week of studying the case and some tests, I think that I found a workaround for this. Not sure if this is the correct approach, but it is working for me so I will post my current solution for future reference.&lt;br&gt;&lt;br&gt;After inspecting the HTML, I noticed that the&amp;nbsp;&lt;strong&gt;&lt;strong&gt;liferay-ui:input-localized&lt;/strong&gt;&lt;/strong&gt;&amp;nbsp;tag creates a&amp;nbsp;&lt;strong&gt;&lt;strong&gt;input&lt;/strong&gt;&lt;/strong&gt;&amp;nbsp;tag by default, and then one more input tag for each language, each time you select a new language. Knowing that, I created some functions with Javascript to help me update the inputs created from my liferay-ui:input-localized. Here is the relevant code:&lt;br&gt;&lt;br&gt;&lt;pre&gt;&lt;code&gt;function updateAnnouncementInformation(index) {
&amp;amp;nbsp; &amp;amp;nbsp; var announcement = announcements[index];

&amp;amp;nbsp;   // the announcement['message'] is a XML String
&amp;amp;nbsp; &amp;amp;nbsp; updateInputLocalized('message', announcement['message']);
}

function updateInputLocalized(input, message) {
&amp;amp;nbsp; &amp;amp;nbsp; var inputId = '&amp;lt;portlet:namespace /&amp;gt;' + input;
&amp;amp;nbsp; &amp;amp;nbsp; var xml = $.parseXML(message);
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;
&amp;amp;nbsp; &amp;amp;nbsp; var inputCurrent = document.getElementById(inputId);
&amp;amp;nbsp; &amp;amp;nbsp; var selectedLanguage = getSelectedLanguage(inputId);
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;
&amp;amp;nbsp; &amp;amp;nbsp; var inputPT = document.getElementById(inputId + '_pt_PT');
&amp;amp;nbsp; &amp;amp;nbsp; inputPT.value = $(xml).find("Title[language-id='pt_PT']").text();
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;
&amp;amp;nbsp; &amp;amp;nbsp; var inputEN = document.getElementById(inputId + '_en_US');
&amp;amp;nbsp; &amp;amp;nbsp; if (inputEN !== null) inputEN.value = $(xml).find("Title[language-id='en_US']").text();
&amp;amp;nbsp; &amp;amp;nbsp; else waitForElement(inputId + '_en_US', inputCurrent, inputId, xml);
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;
&amp;amp;nbsp; &amp;amp;nbsp; var inputLabel = getInputLabel(inputId);
&amp;amp;nbsp; &amp;amp;nbsp; if (selectedLanguage == 'pt-PT') inputLabel.innerHTML = '';
&amp;amp;nbsp; &amp;amp;nbsp; else inputLabel.innerHTML = inputPT.value;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;
&amp;amp;nbsp; &amp;amp;nbsp; if (selectedLanguage == 'pt-PT') inputCurrent.value = inputPT.value;
&amp;amp;nbsp; &amp;amp;nbsp; else if (inputEN !== null) inputCurrent.value = inputEN.value;
&amp;amp;nbsp; &amp;amp;nbsp; else waitForElement(inputId + '_en_US', inputCurrent, inputId, xml);
}
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;
function getSelectedLanguage(inputId) {
&amp;amp;nbsp; &amp;amp;nbsp; var languageContainer = document.getElementById('&amp;lt;portlet:namespace /&amp;gt;' + inputId + 'Menu');
&amp;amp;nbsp; &amp;amp;nbsp; return languageContainer.getElementsByClassName('btn-section')[0].innerHTML;
}
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;
function getInputLabel(inputId) {
&amp;amp;nbsp; &amp;amp;nbsp; var boundingBoxContainer = document.getElementById(inputId + 'BoundingBox').parentElement;
&amp;amp;nbsp; &amp;amp;nbsp; return boundingBoxContainer.getElementsByClassName('form-text')[0];
}
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;
function waitForElement(elementId, inputCurrent, inputId, xml) {
&amp;amp;nbsp; &amp;amp;nbsp; window.setTimeout(function() {
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; var element = document.getElementById(elementId);
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; if (element) elementCreated(element, inputCurrent, inputId, xml);
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; else waitForElement(elementId, inputCurrent, inputId, xml);
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;}, 500);
}
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;
function elementCreated(inputEN, inputCurrent, inputId, xml) {
&amp;amp;nbsp; &amp;amp;nbsp;inputEN.value = $(xml).find("Title[language-id='en_US']").text();
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;
&amp;amp;nbsp; &amp;amp;nbsp;var selectedLanguage = getSelectedLanguage(inputId);
&amp;amp;nbsp; &amp;amp;nbsp;if (selectedLanguage == 'en-US') inputCurrent.value = inputEN.value;
}
&lt;/code&gt;&lt;/pre&gt;&lt;br&gt;With this I am able to update the&amp;nbsp;&lt;strong&gt;&lt;strong&gt;liferay-ui:input-localized&lt;/strong&gt;&lt;/strong&gt;&amp;nbsp;inputs according to a pre-built XML String. I hope that someone finds this useful and if you have anything to add, please let me know!&lt;/body&gt;&lt;/html&gt;</summary>
    <dc:creator>Fabio Carvalho</dc:creator>
    <dc:date>2020-08-19T08:53:56Z</dc:date>
  </entry>
  <entry>
    <title>Liferay 7.2 - Change liferay-ui:input-localized XML with javascript</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=119753846" />
    <author>
      <name>Fabio Carvalho</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=119753846</id>
    <updated>2020-08-12T21:32:04Z</updated>
    <published>2020-08-12T21:32:04Z</published>
    <summary type="html">&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;Hello,&lt;br&gt;&lt;br&gt;I have already posted this on &lt;a href="https://stackoverflow.com/questions/63382142/change-liferay-uiinput-localized-xml-with-javascript"&gt;StackOverflow&lt;/a&gt;, and I am really trying to get this working, but I could not manage it&amp;nbsp;yet. So I am posting this here with the hope that someone knows how to do this.&lt;br&gt;&lt;br&gt;I have the following tag in my view.jsp:&lt;br&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;liferay-ui:input-localized id="message" name="message" xml="" /&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;br&gt;And I know that I can set a XML and have a default value on my input localized. My problem is that I want to change this attribute with javascript. I am listening for some changes and call the function "update()" to update my information:&lt;br&gt;&lt;pre&gt;&lt;code&gt;function update(index) {
    var localizedInput= document.getElementById('message');
    localizedInput.value = 'myXMLString';
}&lt;/code&gt;&lt;/pre&gt;&lt;br&gt;Changing the value is only updating the currently selected language input (with the whole XML String). The XML String is correct, but I am not sure on how to update the XML for the input with javascript.Is this possible?&lt;/body&gt;&lt;/html&gt;</summary>
    <dc:creator>Fabio Carvalho</dc:creator>
    <dc:date>2020-08-12T21:32:04Z</dc:date>
  </entry>
</feed>
