[英]Change text input border color
我想做一個表格,其中在發送之前使用JavaScript驗證數據。 當字段為空時,我要將其邊框設置為紅色。
HTML代碼:
<label>Question: </label><input type = "text" maxlength = "100" name = "question"> <br />
JavaScript代碼1:
fields[i].style.borderColor = "red";
JavaScript代碼2:
fields[i].style.border = "1px solid red";
如果我使用JS代碼1,則邊框會更改其顏色,但寬度會比以前大(即使我沒有說邊框寬度)。 如果我使用JS代碼2,則文本輸入將縮小2px,並且更改非常明顯。
我該怎么做才能僅更改邊框顏色?
實際上,這是通過添加和刪除類來實現的:
$("input").change(function()
{
var value = $(this).val();
if(value=="")
{
$(this).addClass("red-border");
$(this).focus();
}else
{
$(this).removeClass("red-border");
}
});
還有你的CSS:
.red-border{
border: 1px solid red;
}
默認的用戶代理樣式表將其用於輸入字段:
border: 2px inset;
現在您可能會問為什么默認情況下未定義?
默認情況下(在IE中,外觀是硬編碼的):
appearance: textfield;
但是,每當您更改某些內容時:
appearance: none;
並且當appearance
為空時,您將看到2px插入邊框。
所以實際上寬度是這里的問題:
因此,您要更改2種屬性: Border-width
和border-color
您現在需要兩行:
document.getElementsByTagName('input')[0].style.border = "red";
document.getElementsByTagName('input')[0].style.borderWidth = "1px";
但是,您自己的解決方案可能很優雅,因為它是用一行代碼定義的:
fields[i].style.border = "1px solid red";
使用border的整個簡寫屬性不會損害您的代碼。 當您想贏得用戶代理樣式表的勝利時,必須始終非常明確 。
我在生產中有這樣的事情,只是它使用警報而不是顏色更改。 使用CSS樣式和類:
的CSS
.error {
border:2px solid red;
}
的JavaScript
<script>
function checkField(){
var f = document.getElementById('<name of field>').value;
if (f === "") {
document.getElementById('<name of field>').className = document.getElementById('<name of field>').className + " error";
return false;
}
}
</script>
然后將其添加到按鈕/控件的click事件中:
return checkField()
這樣的帖子似乎很相似: 使用javascript更改文本框邊框顏色
使用輪廓線代替邊框。
fields[i].style.outline = "1px solid red"
;
試試看 jQuery的
$("input").change(function ()
{
var value = this.value;
if(value=="")
{
$(this).css("border", "1px solid red");
}else
{
$(this).css("border",'');
}
}).trigger("change");
HTML
<input type="text" class="col">
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.