Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从元素中删除所有jQuery验证引擎类?_Javascript_Jquery_Css_Jquery Validation Engine - Fatal编程技术网

Javascript 如何从元素中删除所有jQuery验证引擎类?

Javascript 如何从元素中删除所有jQuery验证引擎类?,javascript,jquery,css,jquery-validation-engine,Javascript,Jquery,Css,Jquery Validation Engine,我有一个插件,它正在克隆一个输入,这个输入可能有,也可能没有绑定jQuery验证引擎 因此,它的类可能包含例如validate[required,custom[number],min[0.00],max[99999]]或jQuery验证引擎验证程序的任意组合 唯一可以确定的是,该类以validate[开始,以]结束,但为了使其更复杂,如上面的示例所示,可以有嵌套的[]集合 因此,我的问题是,如何使用jQuery删除这些类(而不知道完整的类)?如果不使用jQuery,这样做可能会更简单。使用cla

我有一个插件,它正在克隆一个输入,这个输入可能有,也可能没有绑定jQuery验证引擎

因此,它的类可能包含例如
validate[required,custom[number],min[0.00],max[99999]]
或jQuery验证引擎验证程序的任意组合

唯一可以确定的是,该类以
validate[
开始,以
]
结束,但为了使其更复杂,如上面的示例所示,可以有嵌套的
[]
集合


因此,我的问题是,如何使用jQuery删除这些类(而不知道完整的类)?

如果不使用jQuery,这样做可能会更简单。使用className属性,然后可以使用split()获取类列表,并检查该类是否包含“validate[”

var classes=$('#test')[0].className.split('');
var newClasses=“”;
对于(var i=0;i
这是我的实现,它没有使用regex,而是meh,谁说它也使用了

//'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);
/'第一次验证[必需,自定义[编号],最小值[0.00],最大值[99999]]其他';
var testString=$('#test')[0].className;
函数RemoveValidateClass(类名){
var startPosition=classNames.indexOf(“validate[”),
openCount=0,
closeCount=0,
端位=0;
如果(起始位置==-1){
返回;
}
var stringStart=classNames.substring(0,startPosition),
remainingString=classNames.substring(startPosition),
remainingSplit=remainingString.split(“”);
对于(变量i=0;i
我认为这个解决方案更简单。你只需要用该元素的
id
替换
field\u id
,如果元素有类,比如
一些不同的类验证[…]
,它只会删除带有validate的类,剩下其他类

var that ='#"+field_id+"';
  var classes = $(that).attr('class').split(' ');
  $.each(classes, function(index, thisClass){
 if (thisClass.indexOf('validate') !== -1) {
$(that).removeClass(classes[index])
}
 });

正则表达式可能是最好的选择,如果您已经知道类的名称,jQuery可以删除和添加类,但如果您不想拥有removeClass()调用所有可能的组合您最好使用正则表达式并使用纯JS查找和删除@Sparky的类可能的重复项这个问题不是那个问题的重复项,是的,它们都是关于验证引擎的,但是这个问题更通用,旨在我们如何在不使用时从元素中删除类了解完整类别。关闭,但不要雪茄,因为
验证[必需、自定义[编号]、最小值[0.00]、最大值[99999.99]]
和类似的变体都是有效的!
var that ='#"+field_id+"';
  var classes = $(that).attr('class').split(' ');
  $.each(classes, function(index, thisClass){
 if (thisClass.indexOf('validate') !== -1) {
$(that).removeClass(classes[index])
}
 });