Dijit文本字段在keyup上用逗号分隔每个单词

时间:2014-03-30 20:24:19

标签: javascript dojo onkeyup dijit.form

我有一个dijit验证文本框我试图在每个单词被输入后自动插入一个逗号。但是我不成功的是我的代码和fiddle以供参考。

JSP

<body class="claro">

    <input
        data-dojo-type="dijit.form.ValidationTextBox"
        data-dojo-props="uppercase:true"
        id="validationTextBox"/>
</body>  

的Javascript

dojo.require("dijit.form.ValidationTextBox");

dojo.ready(function() {   

     dojo.connect(dijit.byId("validationTextBox"), "onkeyup", function() {

         //alert('hello');
  var str = dijit.byId("validationTextBox").value.replace(/(\w)[\s,]+(\w?)/g, '$1, $2');
  if (str!= dijit.byId("validationTextBox").value) dijit.byId("validationTextBox").value = str; 
    });

});

1 个答案:

答案 0 :(得分:1)

这个想法是正确的,正则表达似乎有效,但我没有仔细看它。

您似乎使用较旧版本的Dojo(1.6之前版本)进行编码,但小提琴已设置为使用支持AMD的Dojo 1.9.3。

这是一个使用AMD的工作示例。有很多方法可以实现这一目标。我选择了Stateful方法。您可以“观察”dijit属性并在更改时调用函数。我还将intermediateChanges设置为true,以获得更好的效果。

http://jsfiddle.net/RichAyotte/DqVt7/

<body class="claro">
    <input
    data-dojo-type="dijit/form/ValidationTextBox"
        data-dojo-props="uppercase:true, intermediateChanges:true"
        id="validationTextBox"
    />
</body>

require([
    'dijit/form/ValidationTextBox'
    , 'dijit/registry'
    , 'dojo/domReady!'
], function(
    ValidationTextBox
    , registry
){
    var tb = registry.byId('validationTextBox');
    tb.watch('value', function(property, oldValue, newValue) {
      tb.set('value', newValue.replace(/(\w)[\s,]+(\w?)/g, '$1, $2')); 
    });
});