Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

And you invoke it via ConfiForms Field Definition Rule called "Run custom JavaScript"

...

Update: There are some built-in helper functions that you can use now ConfiForms Field Definition Rules#RuncustomJavaScript

And the cfAddFieldRequired being as the most appropriate here, so you dont need to write yo own function

...


Here is a complete storage format for this configuration

Code Block
Code Block
<ac:structured-macro ac:macro-id="564ab3d6-7c49-45c5-9e17-74c492fc1828" ac:name="confiform" ac:schema-version="1">
<ac:parameter ac:name="formName">myform</ac:parameter>
<ac:rich-text-body>
<ac:structured-macro ac:macro-id="62cbf463-6860-4769-a16b-9dcc086910b3" ac:name="confiform-entry-register" ac:schema-version="1">
<ac
<ac:parameter ac:name="embedded">true</ac:parameter>
<ac:parameter ac:name="atlassian-macro-output-type">INLINE</ac:parameter>
<ac:rich-text-body>
<p>
<br/>
</p>
</ac:rich-text-body>
</ac:structured-macro>
<p>
<ac:
<ac:structured-macro ac:macro-id="8c774cc4-b415-47eb-bb28-8cd31891f4ba" ac:name="confiform-field-definition" ac:schema-version="1">
<ac:parameter ac:name="fieldName">makeRequired</ac:parameter>
<ac:parameter ac:name="fieldLabel">Make required</ac:parameter>
<ac:parameter ac:name="type">checkbox</ac:parameter>
</ac:structured-macro>
</p>
<p>
<ac:structured-macro ac:macro-id="
a1c484ce
ed13465f-
abea
eeaa-
4ef8
45ea-
a70f
a26d-
41f718bd7337
30985d6bdd93" ac:name="confiform-field-definition" ac:schema-version="1">
<ac:parameter ac:name="fieldName">myfield</ac:parameter>
<ac:parameter ac:name="fieldLabel">myfield</ac:parameter>
<ac:parameter ac:name="type">text</ac:parameter>
</ac:structured-macro>
</p>
<p>
<br/>
</p>
<ac:structured-macro ac:macro-id="c95709e3-984a-407f-b346-780d806f0542" ac:name="confiform-field-definition-rules" ac:schema-version="1">
<ac:parameter ac:name="condition">makeRequired:true AND myfield:[empty]</ac:parameter>
<ac:parameter
<ac:parameter ac:name="fieldName">myfield requires a value to be set when "makeRequired" field is checked</ac:parameter>
<ac:parameter ac:name="action">Validation rule</ac:parameter>
</ac:structured-macro>
<p>
<ac:structured-macro ac:macro-id="
d3470974
cef33c61-
961a
81fd-
4416
4f4c-
953f
976c-
9354711bd815
390ff31f1a9f" ac:name="confiform-field-definition-rules" ac:schema-version="1">
<ac:parameter ac:name="condition">makeRequired:
true AND myfield:[empty]<
true</ac:parameter>
<ac:parameter
<ac:parameter ac:name="values"
>cfAddFieldRequired
>makeRequired(
formId
formName, 
'myfield'
formId);</ac:parameter>
<ac:parameter ac:name="action">Run custom JavaScript</ac:parameter>
<ac:parameter ac:name="actionFieldName"
>makeRequired,myfield<
>makeRequired</ac:parameter>
</ac:structured-macro>
</p>
<p>
<ac:structured-macro ac:macro-id="
12810cd7
2fbf9094-
1158
c766-
479a
43c5-
a6cc
bd7e-
abf3a3653d94
2d7ce9be0c14" ac:name="confiform-field-definition-rules" ac:schema-version="1">
<ac:parameter ac:name="condition">makeRequired:
false OR !myfield:[empty] OR (makeRequired:false AND myfield:[empty])<
false</ac:parameter>
<ac:parameter ac:name="values"
>cfRemoveFieldRequired
>removeRequired(
formId
formName, 
'myfield'
formId);</ac:parameter>
<ac:parameter ac:name="action">Run custom JavaScript</ac:parameter>
<ac:parameter ac:name="actionFieldName"
>makeRequired,myfield<
>makeRequired</ac:parameter>
</ac:structured-macro>
</p>
<p> <br/>
</
p> </
ac:rich-text-body>
</ac:structured-macro>

Here is a complete storage format for this configuration

<ac:<ac:structured-macro ac:macro-id="564ab3d6c478a814-7c493778-45c54afd-9e179071-74c492fc1828d0b47d254eea" ac:name="confiformhtml" ac:schema-version="1">
<ac:parameter ac:name="formName">myform</ac:parameter>
<ac:richplain-text-body>
<ac:structured-macro ac:macro-body><script>
function makeRequired(formName, formId){
var myFieldLabel = AJS.$('#' + formId).find('#i_labelfor_myfield');
AJS.$(myFieldLabel).find('span').remove();
AJS.$(myFieldLabel).append('<span style="color:red;font-weight: bolder;float: right;font-size: larger;">* </span>');
}
function removeRequired(formName, formId){ 
var myFieldLabel = AJS.$('#' + formId).find('#i_labelfor_myfield'); 
AJS.$(myFieldLabel).find('span').remove(); 
}
</script>></ac:plain-text-body>
</ac:structured-macro>


Info

Update: There are some built-in helper functions that you can use now ConfiForms Field Definition Rules#RuncustomJavaScript

And the cfAddFieldRequired being as the most appropriate here, so you dont need to write yo own function

Complete configuration

Code Block
<ac:structured-macro ac:macro-id="564ab3d6-7c49-45c5-9e17-74c492fc1828" ac:name="confiform" ac:schema-version="1">
  <ac:parameter ac:name="formName">myform</ac:parameter>
  <ac:rich-text-body>
    <ac:structured-macro ac:macro-id="62cbf463-6860-4769-a16b-9dcc086910b3" ac:name="confiform-entry-register" ac:schema-version="1">
      <ac:parameter ac:name="embedded">true</ac:parameter>
      <ac:parameter ac:name="atlassian-macro-output-type">INLINE</ac:parameter>
      <ac:rich-text-body>
<p>
        <p>
          <br/>
        </p>
      </ac:rich-text-body>
    </ac:structured-macro>
    <p>
      <ac:structured-macro ac:macro-id="8c774cc4-b415-47eb-bb28-8cd31891f4ba" ac:name="confiform-field-definition" ac:schema-version="1">
        <ac:parameter ac:name="fieldName">makeRequired</ac:parameter>
        <ac:parameter ac:name="fieldLabel"
>Make required</ac:parameter>
>Make required</ac:parameter>
        <ac:parameter ac:name="type">checkbox</ac:parameter>
      </ac:structured-macro>
    </p>
    <p>
      <ac:structured-macro ac:macro-id="
ed13465f
a1c484ce-
eeaa
abea-
45ea
4ef8-
a26d
a70f-
30985d6bdd93
41f718bd7337" ac:name="confiform-field-definition" ac:schema-version="1">
        <ac:parameter ac:name="fieldName">myfield</ac:parameter>
        <ac:parameter ac:name="fieldLabel">myfield</ac:parameter>
        <ac:parameter ac:name="type">text</ac:parameter>
      </ac:structured-macro>
    </p>
    <p>
      <br/>
    </p>
    <ac:structured-macro ac:macro-id="c95709e3-984a-407f-b346-780d806f0542" ac:name="confiform-field-definition-rules" ac:schema-version="1">
      <ac:parameter ac:name="condition">makeRequired:true AND myfield:[empty]</ac:parameter>
      <ac:parameter ac:name="fieldName">myfield requires a value to be set when "makeRequired" field is checked</ac:parameter>
      <ac:parameter ac:name="action">Validation rule</ac:parameter>
    </ac:structured-macro>
<p>
    <p>
      <ac:structured-macro ac:macro-id="
cef33c61
d3470974-
81fd
961a-
4f4c
4416-
976c
953f-
390ff31f1a9f
9354711bd815" ac:name="confiform-field-definition-rules" ac:schema-version="1">
<ac:parameter ac:name="condition">makeRequired:true</ac:parameter> <ac:parameter ac:name="values">makeRequired(formName, formId);</ac:parameter>
        <ac:parameter ac:name="
action
condition"
>Run
>makeRequired:true 
custom JavaScript<
AND myfield:[empty]</ac:parameter>
        <ac:parameter ac:name="
actionFieldName">makeRequired<
values">cfAddFieldRequired(formId, 'myfield')</ac:parameter>
</ac:structured-macro> </p> <p> <ac:structured-macro ac:macro-id="2fbf9094-c766-43c5-bd7e-2d7ce9be0c14"
        <ac:parameter ac:name="
confiform-field-definition-rules" ac:schema-version="1">
action">Run custom JavaScript</ac:parameter>
        <ac:parameter ac:name="
condition">makeRequired:false</ac:parameter> <ac:parameter ac:name="values">removeRequired(formName, formId);</ac:parameter> <ac:parameter
actionFieldName">makeRequired,myfield</ac:parameter>
      </ac:structured-macro>
    </p>
    <p>
      <ac:structured-macro ac:macro-id="12810cd7-1158-479a-a6cc-abf3a3653d94" ac:name="
action">Run custom JavaScript</ac:parameter>
confiform-field-definition-rules" ac:schema-version="1">
        <ac:parameter ac:name="
actionFieldName">makeRequired</ac:parameter> </ac:structured-macro> </p> </ac:rich-text-body> </ac:structured-macro> <ac:structured-macro ac:macro-id="c478a814-3778-4afd-9071-d0b47d254eea"
condition">makeRequired:false OR !myfield:[empty] OR (makeRequired:false AND myfield:[empty])</ac:parameter>
        <ac:parameter ac:name="
html
values">cfRemoveFieldRequired(formId, 
ac:schema-version="1"> <ac:plain-text-body><script> function makeRequired(formName, formId){ var myFieldLabel = AJS.$('#' + formId).find('#i_labelfor_myfield'); AJS.$(myFieldLabel).find('span').remove(); AJS.$(myFieldLabel).append('<span style="color:red;font-weight: bolder;float: right;font-size: larger;">* </span>'); } function removeRequired(formName, formId){ var myFieldLabel = AJS.$('#' + formId).find('#i_labelfor_myfield'); AJS.$(myFieldLabel).find('span').remove(); } </script>></ac:plain
'myfield')</ac:parameter>
        <ac:parameter ac:name="action">Run custom JavaScript</ac:parameter>
        <ac:parameter ac:name="actionFieldName">makeRequired,myfield</ac:parameter>
      </ac:structured-macro>
    </p>
    <p>
      <br/>
    </p>
  </ac:rich-text-body>
</ac:structured-macro>