Dojo组合框复选框的值

Dojo combobox check values

本文关键字:复选框 组合 Dojo      更新时间:2023-09-26

我目前正在使用Dojo,我对它相当陌生。我遇到了一个问题,我想检查一个组合框的内容,如果用户输入是有效的或不。如果输入是无效的,我想防止POST操作发生后提交被按下。无效的输入将是像{}<>;'等字符。我只想允许文本和数字与regexp,输入必须大于0小于20,所以字段也不能为空。

用户必须能够输入他/她自己的自定义文本,而不仅仅是从已经可用的项目中选择,如果是这种情况,我应该使用FilteringSelect。

Thanks in advance

我想出了一个可能的解决方案的小代码示例。

你应该将组合框的"required"属性设置为true,并包含一个"regExp"属性,如下所示:

<script language="Javascript" type="text/javascript">
        require(["dojo/store/Memory", 
                 "dijit/form/ComboBox",
                 "dijit/form/Button",
                 "dojo/_base/window",
                 "dojo/domReady!"],
        function(Memory, ComboBox, Button, win, ready){
            var stateStore = new Memory({
                data: [
                    {name:"Alabama", id:"AL"},
                    {name:"Alaska", id:"AK"},
                    {name:"Arizona", id:"AZ"},
                    {name:"Arkansas", id:"AR"},
                    {name:"California", id:"CA"},
                    {name:"Colorado", id:"CO"},
                    {name:"Connecticut", id:"CT"},
                    {name:"Delaware", id:"DE"}
                ]
            });
            var box = new ComboBox({
                name: "state",
                value: "",
                store: stateStore,
                searchAttr: "name",
                required: true,
                regExp: "[a-zA-Z0-9]{1,19}"
            });
            win.body().appendChild(box.domNode);
            var submit = new Button({
                label: "Submit",
                style: "margin: 0 0 0 10px;",
                onClick: function() {
                    if ( box.isValid() ) {
                        // Do the post
                        var boxValue = box.get("value").trim();
                    } else {
                        // Invalid entry
                    }
                }
            });
            win.body().appendChild(submit.domNode);
        });
    </script>

如果您需要在RegExp中允许空格,则:

regExp: "[a-zA-Z0-9 ]{1,19}"