我有一个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;
});
});
答案 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'));
});
});