xforms:submitイベントは、送信が行われる前に発生し、送信前のノード値への変更を実行できます。
これを試してみましたが、ブラウザで値が変更されていることがわかりましたが、保存されたノードにはまだ古いデータが残っています。これに関する任意のアイデア。
<xforms:submission id="save-instance" ref="instance('form-instance')"
action="{instance('temp-instance')/submit-url}" method="post" validate="false" replace="none">
<xforms:action ev:observer="save-instance" ev:event="xforms-submit">
<xforms:message level="modal" value="'About to Submit'" />
<xxforms:script>
ORBEON.xforms.Document.setValue("location-of-dda-id-a", 'Test3');
</xxforms:script>
</xforms:action>
<xforms:action ev:observer="save-instance" ev:event="xforms-submit-done">
<xforms:message level="modal" ref="instance('metaData')/save-success-msg" />
</xforms:action>
<xforms:message ev:event="xforms-submit-error" level="modal" ref="instance('metaData')/save-error-msg" />
</xforms:submission>
また、idlocation-of-dda-id-a
は入力フィールドに指定されたIDです。
基本的に、MSドキュメントからコピーして貼り付けた特殊文字を置き換えたいと思いました。以下は、これを実現できるJs関数です。
var specialChars = [/\u0011/g, /\u0012/g, /\u0013/g, /\u0014/g, /\u0016/g, /\u2018/g, /\u2019/g, /\u201c/g, /\u201d/g, /\u2026/g, /\u2013/g, /\u2219/g, /\u2022/g,/\u00BF/g];
var specialCharsReplacement = ["", "", "", "", "", "'", "'", "\"", "\"", "...","-","-","-","?"];
function replaceSpecialChars(formName)
{
for(i = 0; i < formName.elements.length; i++)
{
if (formName.elements[i].type == 'textarea' || formName.elements[i].type=='text')
{
var commentText = formName.elements[i].value;
if(commentText != 0)
{
for(j = 0; j < specialChars.length; j++)
{
commentText = commentText.replace(specialChars[j], specialCharsReplacement[j]);
}
formName.elements[i].value = commentText;
}
}
}
}
そしてライン
formName.elements[i].value = commentText;
に置き換える必要があります
ORBEON.xforms.Document.setValue(formName.elements[i].id.split("\$")[0], commentText);
しかし、それは機能していません。