我有一个插件正在克隆输入,该输入可能绑定(bind)也可能未绑定(bind) jQuery 验证引擎。
因此,它的类可能包含例如validate[required,custom[number],min[0.00],max[99999.99]]
或 jQuery 验证引擎验证器的任意组合。
唯一可以肯定的是类以 validate[
开始并以 ]
结束,但是为了使它像上面的例子更复杂,可以有[]
的嵌套集。
所以,我的问题是,如何使用 jQuery 删除这些类(不知道完整的类)?
最佳答案
这是我的实现,它没有使用正则表达式,但是嗯,谁说它也有?
//'first validate[ required, custom[number], min[0.00], max[99999.99] ] other another';
var testString = $('#test')[0].className;
function removeValidateClasses(classNames) {
var startPosition = classNames.indexOf("validate["),
openCount = 0,
closeCount = 0,
endPosition = 0;
if (startPosition === -1) {
return;
}
var stringStart = classNames.substring(0, startPosition),
remainingString = classNames.substring(startPosition),
remainingSplit = remainingString.split('');
for (var i = 0; i < remainingString.length; i++) {
endPosition++;
if (remainingString[i] === '[') {
openCount++;
} else if (remainingString[i] === ']') {
closeCount++;
if (openCount === closeCount) {
break;
}
}
}
//concat the strings, without the validation part
//replace any multi-spaces with a single space
//trim any start and end spaces
return (stringStart + remainingString.substring(endPosition))
.replace(/\s\s+/g, ' ')
.replace(/^\s+|\s+$/g, '');
}
$('#test')[0].className = removeValidateClasses(testString);
关于javascript - 如何从元素中删除所有 jQuery 验证引擎类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15133464/