簡體   English   中英

如果文本字段為空,則使用JavaScript應用CSS樣式

[英]Applying a CSS style using JavaScript if text field is empty

我在JavaScript中有此函數,我在HTML代碼中使用onclick事件調用了此函數:

function checkTextField(field) {
if (field.value == '') {
    sheet.insertRule("input:focus {background: #fc9fff;}", 1);
  }
}

我已經檢查了if語句是否可以通過在其中使用警報語句而不是insertrule來工作,但是即使該字段的值不為空,似乎仍應用了CSS。 還有什么我可以用的嗎?

問題是當用空元素執行check方法時,您正在為input:focus插入一條通用規則,當移除當前元素的焦點時,該規則不會被移除。

更好的選擇是使用類似

function checkTextField(field) {
    if (field.value == '') {
        field.classList.add('empty')
    } else {
        field.classList.remove('empty')
    }
}

然后在您的樣式表中

input.empty:focus {
    background: #fc9fff;
}

也許更好的方法是將您的功能附加到這樣的onchange事件上

<input type="text" onchange="checkTextField" />

我不確定我是否完全理解您的問題,但是我已經創建了測試HTML文件,並且該測試有效:

<html>
<head>
    <meta charset="UTF-8">
    <title>test</title>
    <style></style>
    <script>
var styleAlreadyAppended = false;
function checkTextField(field) {
    var sheet = document.styleSheets[0];
    if (field.value == '' && styleAlreadyAppended !== true) {
        sheet.insertRule("input:focus {background: #f30;}", 0);
        styleAlreadyAppended = true;
    }
    else if (field.value != '' && styleAlreadyAppended === true) {
        sheet.deleteRule(0);
    }
}
    </script>
</head>
<body>
    <div>
        <input id="testinput" type="text" value="">
        <button onclick="checkTextField(document.getElementById('testinput'))">test</button>
    </div>
</body>
</html>

在FF36上測試。

您可以使用:required:invalid選擇器並在字段上設置required屬性來使用純CSS。

<style>
   input:required:invalid { background: #fc9fff; }      
</style>

<input name="email" required />

此處的實時版本: http//jsfiddle.net/devotis/z319pp1f/

我承認將所有必填字段都以紅色開頭有點敵意。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM