Dojo组合框检查值

时间:2014-03-18 12:26:58

标签: javascript regex combobox dojo

我目前正在与Dojo合作,而且我对它很新。 我遇到了一个问题,如果userinput有效,我想检查组合框的内容。 如果输入无效,我想阻止在按下提交后发生POST操作。 无效输入将是{}<>;'等字符我只想允许带有正则表达式的文本和数字,输入必须大于0且小于20,因此该字段也可能不是空白。

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

提前致谢

1 个答案:

答案 0 :(得分:0)

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

你应该设置" required" ComboBox的属性为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}"

此外,还有相关的link;