ComboBox with Strings

By default, the ComboBox acts as a regular HTML input element, with the additional styling and object model associated with all Wijmo controls.

Learn about Input Controls | ComboBox API Reference

import 'bootstrap.css'; import '@mescius/wijmo.styles/wijmo.css'; import './styles.css'; // import * as input from '@mescius/wijmo.input'; import { getCountries } from './data'; // document.readyState === 'complete' ? init() : window.onload = init; // function init() { // // combo as a regular HTML input element (no itemsSource) let theComboNoSrc = new input.ComboBox('#theComboNoSrc', { textChanged: (sender) => { setText('theComboText', sender.text); } }); // // default combo let theCombo = new input.ComboBox('#theCombo', { textChanged: (sender) => { setText('theComboValue', sender.selectedValue); }, itemsSource: getCountries() }); // // customizable combo let theComboCustom = new input.ComboBox('#theComboCustom', { isRequired: false, isEditable: true, placeholder: 'No Country Selected', textChanged: (sender) => { setText('theComboCustomValue', sender.text); }, itemsSource: getCountries() }); // // handle checkboxes document.querySelector('#isRequired').addEventListener('click', e => { theComboCustom.isRequired = e.target.checked; }); document.querySelector('#isEditable').addEventListener('click', e => { theComboCustom.isEditable = e.target.checked; }); // // show text in an element on the page function setText(id, value) { document.getElementById(id).textContent = value; } }
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>MESCIUS Wijmo ComboBox with Strings</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <!-- SystemJS --> <script src="https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.21.5/system.src.js" integrity="sha512-skZbMyvYdNoZfLmiGn5ii6KmklM82rYX2uWctBhzaXPxJgiv4XBwJnFGr5k8s+6tE1pcR1nuTKghozJHyzMcoA==" crossorigin="anonymous"></script> <script src="systemjs.config.js"></script> <script> System.import('./src/app'); </script> </head> <body> <div class="container-fluid"> <p> The <b>text</b> property gets or sets the user's input: </p> <div class="form-group"> <label for="theComboNoSrc">Any string:</label> <div id="theComboNoSrc"></div> </div> <p> You have typed this: <b id="theComboText"></b>. </p> <h4> Choosing from Lists </h4> <p> If you want to provide a list of strings for users to choose from, set the <b>itemsSource</b> property to an array containing those items and users will be able to select one of them: </p> <div class="form-group"> <label for="theCombo">Select a Country:</label> <div id="theCombo"></div> </div> <p> You have selected this country: <b id="theComboValue"></b>. </p> <h4> Simple Customizations </h4> <p> By default, the ComboBox will force users to select one of the items on the list. Users will not be able to leave the combo empty or to enter values that are not on the list. </p> <p> You can change these behaviors by setting the <b>isRequired</b> and <b>isEditable</b> properties:</p> <p> <label> <input id="isRequired" type="checkbox"> isRequired </label> </p> <p> <label> <input id="isEditable" type="checkbox" checked="checked"> isEditable </label> </p> <div class="form-group"> <label for="theComboCustom">Select a Country:</label> <div id="theComboCustom"></div> </div> <p> You have selected this country: <b id="theComboCustomValue"></b>. </p> </div> </body> </html>
export function getCountries() { return ['Austria', 'Australia', 'Belgium', 'Brazil', 'Canada', 'Chile', 'Denmark', 'Estonia', 'France', 'Germany', 'Hungary', 'Italy', 'Israel', 'Japan', 'Korea', 'Mexico', 'Norway', 'Oman', 'Poland', 'Qatar', 'Russia', 'Sweden', 'Scotland', 'Turkey', 'United Kingdom', 'United States', 'Vietnam', 'Yemen', 'Zambia']; }
h4 { margin-top: 24px; } body { margin-bottom: 24px; } label { margin-right: 3px; }
(function (global) { System.config({ transpiler: 'plugin-babel', babelOptions: { es2015: true }, meta: { '*.css': { loader: 'css' } }, paths: { // paths serve as alias 'npm:': 'node_modules/' }, // map tells the System loader where to look for things map: { 'jszip': 'npm:jszip/dist/jszip.js', '@mescius/wijmo': 'npm:@mescius/wijmo/index.js', '@mescius/wijmo.input': 'npm:@mescius/wijmo.input/index.js', '@mescius/wijmo.styles': 'npm:@mescius/wijmo.styles', '@mescius/wijmo.cultures': 'npm:@mescius/wijmo.cultures', '@mescius/wijmo.chart': 'npm:@mescius/wijmo.chart/index.js', '@mescius/wijmo.chart.analytics': 'npm:@mescius/wijmo.chart.analytics/index.js', '@mescius/wijmo.chart.animation': 'npm:@mescius/wijmo.chart.animation/index.js', '@mescius/wijmo.chart.annotation': 'npm:@mescius/wijmo.chart.annotation/index.js', '@mescius/wijmo.chart.finance': 'npm:@mescius/wijmo.chart.finance/index.js', '@mescius/wijmo.chart.finance.analytics': 'npm:@mescius/wijmo.chart.finance.analytics/index.js', '@mescius/wijmo.chart.hierarchical': 'npm:@mescius/wijmo.chart.hierarchical/index.js', '@mescius/wijmo.chart.interaction': 'npm:@mescius/wijmo.chart.interaction/index.js', '@mescius/wijmo.chart.radar': 'npm:@mescius/wijmo.chart.radar/index.js', '@mescius/wijmo.chart.render': 'npm:@mescius/wijmo.chart.render/index.js', '@mescius/wijmo.chart.webgl': 'npm:@mescius/wijmo.chart.webgl/index.js', '@mescius/wijmo.chart.map': 'npm:@mescius/wijmo.chart.map/index.js', '@mescius/wijmo.gauge': 'npm:@mescius/wijmo.gauge/index.js', '@mescius/wijmo.grid': 'npm:@mescius/wijmo.grid/index.js', '@mescius/wijmo.grid.detail': 'npm:@mescius/wijmo.grid.detail/index.js', '@mescius/wijmo.grid.filter': 'npm:@mescius/wijmo.grid.filter/index.js', '@mescius/wijmo.grid.search': 'npm:@mescius/wijmo.grid.search/index.js', '@mescius/wijmo.grid.grouppanel': 'npm:@mescius/wijmo.grid.grouppanel/index.js', '@mescius/wijmo.grid.multirow': 'npm:@mescius/wijmo.grid.multirow/index.js', '@mescius/wijmo.grid.transposed': 'npm:@mescius/wijmo.grid.transposed/index.js', '@mescius/wijmo.grid.transposedmultirow': 'npm:@mescius/wijmo.grid.transposedmultirow/index.js', '@mescius/wijmo.grid.pdf': 'npm:@mescius/wijmo.grid.pdf/index.js', '@mescius/wijmo.grid.sheet': 'npm:@mescius/wijmo.grid.sheet/index.js', '@mescius/wijmo.grid.xlsx': 'npm:@mescius/wijmo.grid.xlsx/index.js', '@mescius/wijmo.grid.selector': 'npm:@mescius/wijmo.grid.selector/index.js', '@mescius/wijmo.grid.cellmaker': 'npm:@mescius/wijmo.grid.cellmaker/index.js', '@mescius/wijmo.nav': 'npm:@mescius/wijmo.nav/index.js', '@mescius/wijmo.odata': 'npm:@mescius/wijmo.odata/index.js', '@mescius/wijmo.olap': 'npm:@mescius/wijmo.olap/index.js', '@mescius/wijmo.rest': 'npm:@mescius/wijmo.rest/index.js', '@mescius/wijmo.pdf': 'npm:@mescius/wijmo.pdf/index.js', '@mescius/wijmo.pdf.security': 'npm:@mescius/wijmo.pdf.security/index.js', '@mescius/wijmo.viewer': 'npm:@mescius/wijmo.viewer/index.js', '@mescius/wijmo.xlsx': 'npm:@mescius/wijmo.xlsx/index.js', '@mescius/wijmo.undo': 'npm:@mescius/wijmo.undo/index.js', '@mescius/wijmo.interop.grid': 'npm:@mescius/wijmo.interop.grid/index.js', '@mescius/wijmo.touch': 'npm:@mescius/wijmo.touch/index.js', '@mescius/wijmo.cloud': 'npm:@mescius/wijmo.cloud/index.js', '@mescius/wijmo.barcode': 'npm:@mescius/wijmo.barcode/index.js', '@mescius/wijmo.barcode.common': 'npm:@mescius/wijmo.barcode.common/index.js', '@mescius/wijmo.barcode.composite': 'npm:@mescius/wijmo.barcode.composite/index.js', '@mescius/wijmo.barcode.specialized': 'npm:@mescius/wijmo.barcode.specialized/index.js', 'jszip': 'npm:jszip/dist/jszip.js', 'bootstrap.css': 'npm:bootstrap/dist/css/bootstrap.min.css', 'css': 'npm:systemjs-plugin-css/css.js', 'plugin-babel': 'npm:systemjs-plugin-babel/plugin-babel.js', 'systemjs-babel-build':'npm:systemjs-plugin-babel/systemjs-babel-browser.js' }, // packages tells the System loader how to load when no filename and/or no extension packages: { src: { defaultExtension: 'js' }, "node_modules": { defaultExtension: 'js' }, } }); })(this);