【问题标题】:Background color of required field必填字段的背景颜色
【发布时间】:2016-10-01 15:14:57
【问题描述】:

我在表单中的某些字段上使用了 required 属性。提交表单时,未填写的必填字段会在其周围显示标准的红色边框。有没有办法也改变提交后未填写的必填字段的背景颜色?这只是我使用所需属性的示例文本框:

<input id="LastName" name="LastName" type="text"  placeholder="Last Name" required/>

【问题讨论】:

  • 您需要查看验证...通常由 Javascript 处理

标签: html css required


【解决方案1】:

你可以像这样使用CSS attribute selector

input[required] {
  background-color: red;
}
<input id="LastName" name="LastName" type="text"  placeholder="Last Name"
required/>

这将选择具有required 属性的inputs。现在,您可以通过一些简单的 JavaScript 应用它来达到预期的效果:

var submit_button = document.getElementById("submit_button");

submit_button.addEventListener("click", function(e) {
  var required = document.querySelectorAll("input[required]");
  
  required.forEach(function(element) {
    if(element.value.trim() == "") {
      element.style.backgroundColor = "red";
    } else {
      element.style.backgroundColor = "white";
    }
  });
});
<input id="FirstName" name="FirstName" type="text"  placeholder="First Name" required/>
<input id="LastName" name="LastName" type="text"  placeholder="Last Name" required/>

<input id="submit_button" type="submit">

它的作用是在单击提交按钮时添加一个事件侦听器。如果是,它使用querySelectorAll 来获取与CSS 属性选择器input[required] 匹配的所有输入。接下来,它对返回的元素列表执行 for-each 循环。最后,它检查每个输入值,修剪,以确保其中有一些内容(空格不计算在内)。如果输入中没有任何内容,则将背景颜色设置为红色。


注意事项:

您可以随意调整它,如果输入无效,请确保取消您正在处理的任何事件,并且您可以为样式添加类而不是使用element.style.&lt;style&gt;

【讨论】:

  • 我认为您不会希望始终显示它 - 只是在提交之后,例如需要 JavaScript 的边框。
  • Drew - 是的,这是正确的,只有在提交之后。谢谢大家。
  • 啊,我没有看到你的更新。我会删除我的答案。 :)
【解决方案2】:

您可以使用上面某些 cmets 中提到的 css 来更改它,如果它不起作用,请检查是否设置了父背景颜色属性,在这种情况下您可以使用 !important 标记强制为孩子。

【讨论】:

    【解决方案3】:

    你好,你可以通过基本的 Css 试试这个

    :required {
     background: red;
     }
    

    或者轻松地使用 jQuery,它会动态工作在按钮上单击背景颜色将是红色希望它有所帮助。

    html代码

    <input id="LastName" name="LastName" type="text"  placeholder="Last Name"
    required/>
    <input id="sub" type="button">
    

    和jquery代码

     <script>
    $('#sub').click(function(){
    $('#LastName').each(function() {
    if($(this).val() == '') {
    $(this).css('background-color' , '#FF0000');
    $(this).attr("placeholder", "Required");
     }
     });
     });
     </script>  
    

    但是,如果您想对整个表单执行此操作,则如下所示

        <script>
        $('#sub').click(function(e){ //submit button name
        e.preventDefault()
        $('.required').each(function() {   //a constant class for evert input item
        if($(this).val() == '') {
        $(this).css('background-color' , '#FF0000');
        $(this).attr("placeholder", "Required");
        }
        });
        });
        </sctript>
    

    见下面的小提琴 required Fiddle

    必须在头内添加 jQuery 库

    <head>
    <script        
    src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js">   
    </script>
    </head>
    

    【讨论】:

    • 对单个输入的 id 进行迭代?这真的没有多大意义,因为您希望 id 是独一无二的。
    • 我只是展示一个示例如果所有输入都在表单或 div 中,那么 div Id 应该在 jQuery 中
    • Asifuzzaman - 我将您的脚本用于整个表单。但是,对于带有提交按钮的 html,我说的是 type="submit" 而不是 type="button"。实际上都试过了,但都没有奏效。它仍然只是在文本框周围有红色边框,并且在提交后没有改变背景颜色。
    • 嘿,我明白你为什么会看到我更新的最后一个脚本答案添加了小提琴,以便你理解希望它对你有帮助,如果没有,请告诉我
    • 嗨..仍然不适合我。从您的小提琴中复制所有代码。仍然只是得到红色边框。
    【解决方案4】:
    input[type="text"],lastname {
      background-color : red;
    }
    

    【讨论】:

    • 这会一直为所有文本输入的背景着色。 OP 只需要在验证表单时。
    【解决方案5】:
    body input:focus:required:invalid,
    body textarea:focus:required:invalid {
      color: green; 
    }
    

    【讨论】:

    • 请附上对代码的解释,这有助于使用代码格式和/或适当的缩进以提高可读性。
    猜你喜欢
    • 1970-01-01
    • 2013-04-02
    • 1970-01-01
    • 1970-01-01
    • 2014-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多