Reputation: 121
How to change CSS placeholder background-color after it's text was changed with JavaScript?
I want to make input validation I have set style when input form is invalid. But it doesn't work after placeholder text was changed by javascript.
It works after user fill the input again
CSS
.common-form input[type="text"]:invalid:focus,
.common-form input[type="email"]:invalid:focus,
.common-form input[type="number"]:invalid:focus,
.common-form input[type="search"]:invalid:focus,
.common-form input[type="password"]:invalid:focus,
.common-form textarea:invalid:focus,
.common-form select:invalid:focus {
border-color: rgb(248,66,66);
background-color: rgb(248,46,46);
color: #fff;
-webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 0 8px rgb(248,66,66);
-moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 0 8px rgb(248,66,66);
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 0 8px rgb(248,66,66);
}
JAVASCRIPT
$("#dftrnama").change(function () {
$.ajax({
url: "ajax/ceknama",
data: {
"nama": $(this).val()
},
method: "POST",
success: function (result) {
if (result == '1') {
$("#dftrnama").attr("placeholder", "Nama Ini Sudah Ada!").val("").focus().blur();
$("input[type='submit']").attr("disabled", true);
$("#dftremail").attr("disabled", true);
$("#dftrhp").attr("disabled", true);
} else {
$("input[type='submit']").removeAttr("disabled");
$("#dftremail").removeAttr("disabled");
}
}
});
});
Upvotes: 0
Views: 2045
Reputation: 133403
You don't need to call blur()
, when method is invoke the element loses focus thus CSS rules are not applied.
$("#dftrnama").attr("placeholder", "Nama Ini Sudah Ada!").val("").focus();
//To simulate `$.ajax()`
setTimeout(function() {
$("#dftrnama").attr("placeholder", "Nama Ini Sudah Ada!").val("").focus();
}, 5000)
.common-form input[type="text"]:invalid:focus,
.common-form input[type="email"]:invalid:focus,
.common-form input[type="number"]:invalid:focus,
.common-form input[type="search"]:invalid:focus,
.common-form input[type="password"]:invalid:focus,
.common-form textarea:invalid:focus,
.common-form select:invalid:focus {
border-color: rgb(248, 66, 66);
background-color: rgb(248, 46, 46);
color: #fff;
-webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 0 8px rgb(248, 66, 66);
-moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 0 8px rgb(248, 66, 66);
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 0 8px rgb(248, 66, 66);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="dftrnama" value="test">
Upvotes: 1
Reputation: 591
Perhaps:
$("#dftrnama").change( function(){
$.ajax({
url: "ajax/ceknama",
data: { "nama" : $(this).val() } ,
method: "POST",
success: function(result){
if( result == '1') {
$("#dftrnama").attr("placeholder", "Nama Ini Sudah Ada!").val("").focus().blur();
$("input[type='submit']").attr("disabled", true);
$("#dftremail").attr("disabled", true);
$("#dftrhp").attr("disabled", true);
} else {
$("input[type='submit']").removeAttr("disabled");
$("#dftremail").removeAttr("disabled");
$('#dftrnama').css('background-color','#FFF')
}
}
});
Upvotes: 0
Reputation: 589
$('.elementclass').css('background-color','blue');
Add that to your javascript at the right point in your application.
I'm assuming that's what you meant
Upvotes: 0