我对jQuery有疑问。我的代码在下面工作正常;它会更改input
border-color
,具体取决于输入的值。但如果在input
的页面加载值中,则不会更改border-color
。如何在页面加载后从头开始border-color
更改?
谢谢:)
<input type="text" class="col" value="">
// When the <input>'s value changes
$("input").change(function() {
// If the value is less than 7, add a red border
if ($(this).val() < 7) {
$(this).css("border", "5px solid red");
}
// Else if the value is equal to 7, add a green border
else if ($(this).val() == 7) {
$(this).css("border", "5px solid green");
}
// Else if the value is greater than 7, add an orange border
else if ($(this).val() > 7) {
$(this).css("border", "5px solid orange");
}
// Else if the value is anything else, add a black border
else {
$(this).css("border", "5px solid black");
}
});
答案 0 :(得分:10)
只需触发事件:
$("input").change(function() {
// ...
}).trigger("change");
答案 1 :(得分:6)
我建议:
$('input').on('change', function(){
var v = parseInt(this.value, 10);
$(this).css('border', function(){
if (v < 7) {
return '5px solid #f00';
}
else if (v == 7) {
return '5px solid #0f0';
}
else if (v > 7) {
return '5px solid #f90';
}
else {
return '5px solid #000';
}
});
}).change();
虽然老实说,鉴于每个情况似乎需要border-width
5px
和border-style
solid
,我会设置那些CSS中的部分:
input {
border-width: 5px;
border-style: solid;
}
只需更新jQuery中的border-color
:
$('input').on('change', function(){
var v = parseInt(this.value, 10);
$(this).css('border-color', function(){
if (v < 7) {
return '#f00';
}
else if (v == 7) {
return '#0f0';
}
else if (v > 7) {
return '#f90';
}
else {
return '#000';
}
});
}).change();
而且,最后,仅仅因为我有时无法帮助自己(虽然这种方法可以采取,但我不能诚实地推荐......),添加条件运算符:< / p>
$('input').on('change', function(){
var v = parseInt(this.value, 10);
$(this).css('border-color', function(){
var v = parseInt(this.value,10);
return isNaN(v) ? '#000' : v < 7 ? '#f00' : v == 7 ? '#0f0' : '#f90';
});
}).change();
参考文献:
答案 2 :(得分:1)
这里的问题相同。在我的情况下,输入是一个表列,它显示为每个表行。使用下一个代码,我设法只更改了一种输入颜色,而不是当我更改一个输入颜色时。
$('input[type=number]').each(function () {
/* Change border color depending on the input value */
var value = parseInt(this.value, 10);
if (value != 0) {
$(this).css('border-color', function () {
return value ? 0 : '#bfbfbf', '#f32d83';
});
}
else {
$(this).css('border-color', '#bfbfbf');
}
});
希望有所帮助