简体   繁体   English

使用 jquery 更改表单域背景颜色

[英]Changing the form field background color with jquery

I have this small code and I am trying to change the background color of the field when I click on it to write, for example if I click in "email" field I want the field to turn yellow so it looks better.我有这个小代码,当我单击它进行写入时,我试图更改该字段的背景颜色,例如,如果我单击“电子邮件”字段,我希望该字段变为黄色,以便看起来更好。 I searched but I don't know I couldnt find a soultion becuase I am not really familar with jquery.我搜索了但我不知道我找不到灵魂因为我对 jquery 不是很熟悉。

<div class="content">
    <div class="row">
    <div class="left">First name</div>
    <div class="right"><input name="Text1" type="text" class="text" /></div>
    <div class="clear"></div>
    </div>
    <div class="row">
    <div class="left">Last name</div>
    <div class="right"><input name="Text1" type="text" class="text" /></div>
    <div class="clear"></div>
    </div>
    <div class="row">
    <div class="left">Email</div>
    <div class="right"><input name="Text1" type="text" class="text" /></div>
    <div class="clear"></div>
    </div>
    <div class="row">
    <div class="left">Password</div>
    <div class="right"><input name="Text1" type="text" class="text" /></div>
    <div class="clear"></div>
    </div>
    </div>

jquery jquery

$(document).ready(function()
   {
   $('.left, .content input, .content textarea, .content select').focus(function(){
   $(this).parents('.row').addClass("over");
   }).blur(function(){
   $(this).parents('.row').removeClass("over");
   });
   });

css css

body{
    font-family:Arial, Helvetica, sans-serif;
    font-size: 13px;
    }
    .content{
    padding:10px;
    width:370px
    }
    .left{
    width:150px;
    float:left;
    padding:7px 0px 0px 7px;
    min-height:24px;
    }
    .right{
    width:200px;
    float:left;
    padding:5px;
    min-height:24px;
    }
    .clear{
    float:none;
    clear:both;
    height:0px;
    }
    .row{
    background-color:none;
    display:block;
    min-height:32px;
    }
    .text{
    width:190px;
    }
    .ruler{
    width:400px; border-bottom:dashed 1px #dcdcdc;
    }
    tr:focus{
    background-color:#fcfcf0;
    }
    td{
    vertical-align:top;
    }
    .over{
    background-color:#f0f0f0;
    }
    .out{
    background-color:none;
    }

Whoever can help me with the solution, thanks a lot.谁能帮我解答一下,万分感谢。

You can get email type and add class based on that您可以获得 email 类型并在此基础上添加 class

JQuery JQuery

if( $(this).attr("type") == 'email' ){
    $(this).parents('.row').addClass("email");
}

CSS CSS

.over.email{
    background-color:#FFFF00;
}

 $(document).ready(function(){ $('.left, .content input, .content textarea, .content select').focus(function(){ $(this).parents('.row').addClass("over"); if( $(this).attr("type") == 'email' ){ $(this).parents('.row').addClass("email"); } }).blur(function(){ $(this).parents('.row').removeClass("over"); if( $(this).attr("type") == 'email' ){ $(this).parents('.row').removeClass("email"); } }); });
 body{ font-family:Arial, Helvetica, sans-serif; font-size: 13px; }.content{ padding:10px; width:370px }.left{ width:150px; float:left; padding:7px 0px 0px 7px; min-height:24px; }.right{ width:200px; float:left; padding:5px; min-height:24px; }.clear{ float:none; clear:both; height:0px; }.row{ background-color:none; display:block; min-height:32px; }.text{ width:190px; }.ruler{ width:400px; border-bottom:dashed 1px #dcdcdc; } tr:focus{ background-color:#fcfcf0; } td{ vertical-align:top; }.over{ background-color:#f0f0f0; }.over.email{ background-color:#FFFF00; }.out{ background-color:none; }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="content"> <div class="row"> <div class="left">First name</div> <div class="right"><input name="Text1" type="text" class="text" /></div> <div class="clear"></div> </div> <div class="row"> <div class="left">Last name</div> <div class="right"><input name="Text1" type="text" class="text" /></div> <div class="clear"></div> </div> <div class="row"> <div class="left">Email</div> <div class="right"><input name="Text1" type="email" class="text" /></div> <div class="clear"></div> </div> <div class="row"> <div class="left">Password</div> <div class="right"><input name="Text1" type="text" class="text" /></div> <div class="clear"></div> </div> </div>

You've done it right, just change the CSS rule, like this for instance:您做得对,只需更改 CSS 规则,例如:

.over{
background-color:#ffff00;
}

You can bind an event handler to the "focus" for only the email input, for example:您可以仅为 email 输入将事件处理程序绑定到“焦点”,例如:

$(document).ready(function () {
    $('[name=email]').focus(function () {
      $(this).parents('.row').addClass("over");
    }).blur(function () {
      $(this).parents('.row').removeClass("over");
    });
  });

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM