2

We are creating a form with survey.js. However, we will add a checkbox for mandatory choices regarding kvkk and we need to show some text in the title for the explanations to be seen. We also want to add capctha verification.

sample

I tried to write html content for the titles on the survey.js screen but it didn't work

1 Answer 1

2

SurveyJS supports formatting of labels and titles through Markdown, however it can be extended to support HTML as well. To acheive that you need to use a library like markdown-it. You will also need to handle the onTextMarkdown event of the Survey. This is documented with a working demo here.

Here's how to implement this with React:

import React from "react";
import { Model } from "survey-core";
import { Survey } from "survey-react-ui";
import "survey-core/defaultV2.min.css";
import "./index.css";
import { json } from "./json";
import markdownit from "markdown-it"; // <-- Import the 3rd party library

function SurveyComponent() {
  const survey = new Model(json);
  survey.onComplete.add((sender, options) => {
    console.log(JSON.stringify(sender.data, null, 3));
  });
  // Instantiate `markdown-it`
  const converter = markdownit({
    html: true, // <-- Enable HTML support
  });
  survey.onTextMarkdown.add((_, options) => {
    // Convert Markdown to HTML
    let str = converter.renderInline(options.text);
    options.html = str;
  });
  return <Survey model={survey} />;
}

export default SurveyComponent;

You can then include HTML in your titles like so:

export const json = {
  elements: [
    {
      type: "checkbox",
      name: "Question1",
      title:
        "Check the box to continue",
      choices: [
        {
          value: 1,
          text: "I agree to the <a href='https://stackoverflow.com/legal/terms-of-service/public'>terms & conditions</a>",
        },
      ],
    },
  ],
  showQuestionNumbers: false,
};

Here's a full working example: https://codesandbox.io/p/sandbox/awesome-dust-6n4qf8?workspaceId=64c276ad-0dfc-48c8-9e36-39d45ffd6536

IMPORTANT: Enabling HTML support as shown here is considered unsafe. Make sure you sanitize the HTML before applying it to the text labels.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.