Cart Buy Licenses Contact Integrate into App Docs Support Login/Register
v 1.9.0
v 1.9.0
Overview Examples Docs Source

Run Expression Trigger

On changing an answer, you may run an expression


                        
        
            Survey.StylesManager.applyTheme("bootstrap");
            Survey.defaultBootstrapCss.navigationButton = "btn btn-green";
        

function setOfficialCountryName(params) {
    if (params.length < 2)
        return;
    var country = params[0];
    var officialName = params[1];
    var survey = this.survey;
    if (!country || !country.length) {
        survey.clearValue(officialName);
        return;
    }
    survey.setVariable("request_processing", true);
    survey.setVariable("request_error", null);
    country = country
        .charAt(0)
        .toUpperCase() + country
        .slice(1)
        .toLowerCase();
    $.ajax({
        url: "https://surveyjs.io/api/CountriesExample?name=" + country,
        type: "GET",
        success: function (data) {
            if (!!data && data.length > 0) {
                var countryValue = data[0];
                survey.setValue(officialName, countryValue.officialName);
                survey.setVariable("hasError", false);
            } else {
                survey.setVariable("hasError", true);
                survey.setVariable("request_error", "The country is not found.");
                survey.clearValue(officialName);
            }
                survey.setVariable("request_processing", false);
        },
        error: function (xhr, ajaxOptions, thrownError) {
            survey.setVariable("hasError", true);
            survey.setVariable("request_error", "The country is not found.");
            survey.clearValue(officialName);
        }
    });
}

Survey.FunctionFactory.Instance.register("setOfficialCountryName", setOfficialCountryName);
            
                var json = {
  "elements": [
    {
      "type": "text",
      "name": "country",
      "title": "Please enter the country"
    },
    {
      "type": "html",
      "name": "requesting",
      "html": "The data is requesting",
      "visibleIf": "{request_processing} = true"
    },
    {
      "type": "text",
      "name": "name_official",
      "title": "Official name is:",
      "readOnly": true,
      "visibleIf": "{name_official} notempty"
    },
    {
      "type": "html",
      "name": "error",
      "html": "The following error has happened: <b>{request_error}</b>",
      "visibleIf": "{hasError} = true"
    }
  ],
  "triggers": [
    {
      "type": "runexpression",
      "expression": "{country} notempty or {country} empty",
      "runExpression": "setOfficialCountryName({country}, 'name_official')"
    }
  ]
};

                window.survey = new Survey.Model(json);
            
        
            survey.onComplete.add(function(sender) {
            document.querySelector('#surveyResult').textContent =
            "Result JSON:\n" + JSON.stringify(sender.data, null, 3);
            });
        
            
                survey.render("surveyElement");
            

                    
<!DOCTYPE html>
<html lang="en">
<head>
    <title>On changing an answer, you may run an expression, Knockoutjs Survey Library Example</title>

<meta name="viewport" content="width=device-width" />
    <script src="https://unpkg.com/jquery"></script>
    <script src="https://unpkg.com/knockout@3.5.1/build/output/knockout-latest.js"></script>
    <script src="/DevBuilds/survey-knockout/survey.ko.min.js"></script>
    <link rel="stylesheet" href="https://unpkg.com/bootstrap@3.3.7/dist/css/bootstrap.min.css">
    <link rel="stylesheet" href="./index.css">

</head>
<body>
    
            <div id="surveyElement" style="display:inline-block;width:100%;">
            </div>
    <div id="surveyResult"></div>

<script type="text/javascript" src="./index.js"></script>

</body>
</html>