Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/82.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
Jquery 将文本框设置回默认样式_Jquery_Html_Css - Fatal编程技术网

Jquery 将文本框设置回默认样式

Jquery 将文本框设置回默认样式,jquery,html,css,Jquery,Html,Css,我有一些jQuery,它在表单输入元素上循环,如果它发现它们是空的,它会将它们的边框颜色设置为红色。单击submit按钮时,它会再次检查元素,如果有包含数据的元素,那么我会尝试将文本框设置回其原始样式 我尝试过使用边框样式:solid/none/initial和边框颜色:black,但该框要么看起来非常粗体,要么根本没有边框。代码如下: function validateForm() { isValid = true; $('input[type="text"]'

我有一些jQuery,它在表单输入元素上循环,如果它发现它们是空的,它会将它们的
边框颜色设置为红色。单击submit按钮时,它会再次检查元素,如果有包含数据的元素,那么我会尝试将文本框设置回其原始样式

我尝试过使用
边框样式:solid/none/initial
边框颜色:black
,但该框要么看起来非常粗体,要么根本没有边框。代码如下:

function validateForm() {
        isValid = true;
        $('input[type="text"]').each(function () {
            if ($(this).val() === "") {
                $(this).css('border-color', 'red');
                isValid = false;
                alert('Please fill a value in for : ' + $(this).attr('name'));
            }
            else {
                $(this).css('border-color', 'black');
                $(this).css('border-style', 'solid');
            }
        });

        if (isValid) {
            $('#contactForm').submit();
        }
    }

使用类可能会有所帮助,也可能会减少逻辑:

function validateForm() {
    var formValid = true;

    $('input[type="text"]').each(function(){
        var $this = $(this);
        if ($this.val() === "") {
            $this.addClass('errorClass');
            formValid = false;
        } else {
            $this.removeClass('errorClass');
        }
    });

    if (formValid) {
        $('#contactForm').submit();
    } else {
        alert('Missing required fields.  Please review and try again.');
    }
}
“errorClass”在哪里

errorClass { border-color: #F00; }

使用类可能会有所帮助,也可能会减少逻辑:

function validateForm() {
    var formValid = true;

    $('input[type="text"]').each(function(){
        var $this = $(this);
        if ($this.val() === "") {
            $this.addClass('errorClass');
            formValid = false;
        } else {
            $this.removeClass('errorClass');
        }
    });

    if (formValid) {
        $('#contactForm').submit();
    } else {
        alert('Missing required fields.  Please review and try again.');
    }
}
“errorClass”在哪里

errorClass { border-color: #F00; }

不要直接使用
$(this.css('border-color','red')
)设置边框颜色,而是创建一个样式为
边框颜色:red
的类,并使用
$(this.addClass(className)
$(this.removeClass(className)
添加和删除样式

function validateForm() {
    isValid = true;
    $('input[type="text"]').each(function () {
        if ($(this).val() === "") {
            $(this).addClass('redBorderClass');
            isValid = false;
            alert('Please fill a value in for : ' + $(this).attr('name'));
        }
        else {
            $(this).removeClass('redBorderClass');
        }
    });

    if (isValid) {
        $('#contactForm').submit();
    }
}

不要直接使用
$(this.css('border-color','red')
)设置边框颜色,而是创建一个样式为
边框颜色:red
的类,并使用
$(this.addClass(className)
$(this.removeClass(className)
添加和删除样式

function validateForm() {
    isValid = true;
    $('input[type="text"]').each(function () {
        if ($(this).val() === "") {
            $(this).addClass('redBorderClass');
            isValid = false;
            alert('Please fill a value in for : ' + $(this).attr('name'));
        }
        else {
            $(this).removeClass('redBorderClass');
        }
    });

    if (isValid) {
        $('#contactForm').submit();
    }
}

如果您正在使用样式表,这将用于重置输入:

$(input).attr('style', '')

如果您正在使用样式表,这将用于重置输入:

$(input).attr('style', '')


如果您使用样式表只需执行$(input).attr('style','')这将清除输入本身的所有样式(基本上将其重置为样式表定义的样式)@Camway-将其作为答案发布。@Taplar-将其作为答案发布。作为旁注,您应该添加一个新变量,
var$this=$(this)
回调并更改对
$(this)
的所有引用以使用该变量。例如,添加变量后,您将
$(this.val()…
更改为
$this.val()…
。我们这样做是因为
$(…)
实际上是一个函数调用,可以被看作是一个构造函数,每次都创建一个新的jQuery对象
每次,我们都将其存储在一个变量中,
$this
,以供重用。这在某些情况下可以显著提高性能。看看@Taplar的解决方案,它使用了
$this
。这是迄今为止最干净、最有效的解决方案。如果您使用样式表只需执行$(input.attr('style','')这将清除输入本身的所有样式(基本上将其重置为样式表定义的样式)@Camway-将其作为答案发布。@Taplar-将其作为答案发布。作为旁注,您应该在
中添加一个新变量,
var$this=$(this);
。每个(
回调并将所有引用更改为
$(this)
使用该变量。例如,添加变量后,您将
$(this.val()…
更改为
$this.val()…
。我们这样做是因为
$(…)
实际上是一个函数调用,可以被认为是一个构造函数,每次都创建一个新的jQuery对象。而不是重新创建
$(此)
每次,我们都将其存储在一个变量中,
$this
,以供重用。在某些情况下,这可以显著提高性能。看看@Taplar的解决方案,它使用了
$this
。His是迄今为止最干净、最有效的解决方案。虽然您的解决方案稍微精简了一些,但实际上运行速度比原始的
慢(function(){…if…else…
implementation。原始运行时间为
O(n)
time(在集合中循环一次),而您的运行时间为
O(3n)
time(当它在集合中循环三次时,每次输入一次。一旦这项内容被更改回来,我将进行升级投票。现在升级投票,假设您将删除另一个
。filter
调用您真的觉得有限集上的筛选器对性能有很大影响吗?不,但它对性能的影响大于包含的OP,这使得它不是最佳解决方案。)在我写完我的建议评论之前,
$this
的使用也非常棒!虽然更加精简,但您的解决方案实际上比原始的
运行得慢。每个(函数(){…如果…否则…
实现。原始的运行时间为
O(n)
时间(当它在集合中循环一次)而您的运行时间是
O(3n)
time(当它在集合中循环三次时,每次输入一次。一旦这项内容被更改回来,我将进行升级投票。现在升级投票,假设您将删除另一个
。filter
调用您真的觉得有限集上的筛选器对性能有很大影响吗?不,但它对性能的影响大于包含的OP,这使得它不是最佳解决方案。)在我写完我的建议评论之前,
$this
的使用真是太棒了!