当我选择“电话号码”选项时,我有一个选择列表,我在号码字段中设置了“regExp”选项,因此用户必须输入电话号码 以所需的格式。我的选择列表中还有一个“电子邮件”选项,选择后我想为数字字段设置data-dojo-props。
换句话说,我使用一个 validationTextField 来捕获电话号码和电子邮件地址。但是,当设置 regExp 时,它不会达到所需的效果,而当为电子邮件设置 data-dojo-props 时,它不会达到所需的效果。在这两个选项中,如果输入了有效值或输入了无效值,验证器都会显示错误(字段上有红色感叹号)。
代码
<input type="text" required="true" name="contactString"
id="contactStringId" placeholder="Your Contact Number"
data-dojo-type="dijit/form/ValidationTextBox"
missingMessage="Please Enter Your Contact Number"
title="Contact Number / Email Address :" style="width: 25em;"/>
if (contactType.match(/^email|e-mail|mail.*$/)){
dijit.byId('contactStringId').attr('invalidMessage', 'Invalid ' + contactType.toProperCase() +' Format: www.local-part@domain.com');
dijit.byId('contactStringId').set('data-dojo-props', 'validator:dojox/validate/isEmailAddress');
console.log('email settings set');
}else if(contactType.match(/^cell|home|work|fax|office.*$/)){
dijit.byId('contactStringId').attr('invalidMessage', 'Invalid ' + contactType.toProperCase() +' Format: (xxx)-xxx-xxxx');
dijit.byId('contactStringId').set('regExp', '^[0-9]\d{2}-\d{3}-\d{4}$');
console.log('phone number settings set');
}
最佳答案
当您以编程方式设置 dojo 小部件属性时,您不会设置 data-dojo-props,通常会设置您想要设置的实际属性。所以你会这样做:
dijit.byId('contactStringId').set("validator", /*whatever validator you want here*/);
更好的方法就是这样做:
var contactStringBox = dijit.byId('contactStringId');
contactStringBox.validator = function() {
/*
*whatever validation code you want here
* like if(this.value === "test") { return false;}
*/
}
关于javascript - Dojo 从 javascript 设置验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23500755/