javascript - 使用 HTML 和 CSS 时,如何将类应用到已经是只读的字段?

标签 javascript jquery html css readonly-attribute

这是我的困境:我有一个带有 if 语句的 jQuery 代码,它根据在用户填写表单的页面上选择的值将特定类应用于元素。我还构建了另一个表单,用户可以在其中查看已填写表单的详细信息。当显示详细信息页面时,应用了大部分类,但灰色的“只读”背景覆盖了原始类的背景色。如果可以避免的话,我真的不想进入 Bootstrap 文件并调整只读背景颜色代码。如何将完整类(包括背景色)应用到只读元素?

“创建”页面的代码片段:

<div class="col-md-12">
                <div class="col-md-10">
                    @Html.LabelFor(model => model.Question1, htmlAttributes: new { @class = "control-label" })
                </div>
                <div class="col-md-2">
                    @Html.DropDownListFor(model => model.Question1, new[] { new SelectListItem() { Text = "Pass", Value = "Pass" }, new SelectListItem() { Text = "Fail", Value = "Fail" }, new SelectListItem() { Text = "NA", Value = "NA" } }, "Select an option", htmlAttributes: new { @class = "form-control text-box centerline", @onchange = "updateEscalationsListeningScore()", id = "question1Answer" })
                    @Html.ValidationMessageFor(model => model.Question1, "", new { @class = "text-danger" })
                </div>
            </div>

“创建”页面中的 jQuery:

if (Q1Answer === "Pass") {
        $('#question1Answer').addClass("correctListeningAnswer").removeClass("incorrectListeningAnswer").removeClass("naListeningAnswer");
        Q1Score = 3;
        Q1PotentialPoints = 3;
    }
    else if (Q1Answer === "Fail") {
        $('#question1Answer').addClass("incorrectListeningAnswer").removeClass("correctListeningAnswer").removeClass("naListeningAnswer");
        Q1Score = 0;
        Q1PotentialPoints = 3;
    }
    else if (Q1Answer === "NA") {
        $('#question1Answer').addClass("naListeningAnswer").removeClass("incorrectListeningAnswer").removeClass("correctListeningAnswer");
        Q1Score = 0;
        Q1PotentialPoints = 0;
    }
    else {
        $('#question1Answer').removeClass("correctListeningAnswer").removeClass("incorrectListeningAnswer").removeClass("naListeningAnswer");
        Q1Score = 3;
        Q1PotentialPoints = 3;
    }

“详细信息”页面中的代码片段:

<div class="col-md-12">
                <div class="col-md-10">
                    @Html.LabelFor(model => model.Question1, htmlAttributes: new { @class = "control-label" })
                </div>
                <div class="col-md-2">
                    @Html.EditorFor(model => model.Question1, new { htmlAttributes = new { @class = "form-control text-box centerline", id = "question1Answer", @readonly = "readonly" } })
                    @Html.ValidationMessageFor(model => model.Question1, "", new { @class = "text-danger" })
                </div>
            </div>

“详细信息”页面中的 jQuery:

        if (Q1Answer === "Pass") {
        $('#question1Answer').addClass("correctListeningAnswer").removeClass("incorrectListeningAnswer").removeClass("naListeningAnswer");
        Q1Score = 3;
        Q1PotentialPoints = 3;
    }
    else if (Q1Answer === "Fail") {
        $('#question1Answer').addClass("incorrectListeningAnswer").removeClass("correctListeningAnswer").removeClass("naListeningAnswer");
        Q1Score = 0;
        Q1PotentialPoints = 3;
    }
    else if (Q1Answer === "NA") {
        $('#question1Answer').addClass("naListeningAnswer").removeClass("incorrectListeningAnswer").removeClass("correctListeningAnswer");
        Q1Score = 0;
        Q1PotentialPoints = 0;
    }
    else {
        $('#question1Answer').removeClass("correctListeningAnswer").removeClass("incorrectListeningAnswer").removeClass("naListeningAnswer");
        Q1Score = 3;
        Q1PotentialPoints = 3;
    }

CSS

.correctListeningAnswer {
background-color: #c6efce;
color: #006100;}

.incorrectListeningAnswer {
background-color: #ffc7ce;
color: #9c0006;}

.naListeningAnswer {
background-color: #ffeb9c;
color: #9c5700;}

预先感谢您的帮助。

科里

最佳答案

谢谢大家提供的信息。我研究了你们所有人建议的一些事情,看起来我能够让它发挥作用。令人沮丧的是,答案非常简单,而我能够到达那里的方式是使用 CBroe 的方法。我只需要将它添加到我的 CSS 文件中:

.correctListeningAnswer[readonly] {
background-color: #c6efce;
color: #006100;
}

.incorrectListeningAnswer[readonly] {
background-color: #ffc7ce;
color: #9c0006;
}

.naListeningAnswer[readonly] {
background-color: #ffeb9c;
color: #9c5700;
}

非常感谢您的帮助!

关于javascript - 使用 HTML 和 CSS 时,如何将类应用到已经是只读的字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48462954/

相关文章:

javascript - 使用 jquery,如何根据 TR 属性对表中的行重新排序?

jquery - jQuery offset(); 是否对 td 细胞有效吗?

javascript - 为不同的显示器尺寸自动调整 Shiny webapp 页面

javascript - .NET Core 2.1 使用 React 模板 - 使用 "fetch()"时位置 0 处出现意外 token < json

javascript - 正则表达式从字符串末尾获取数字

javascript - 将 jQuery 加载到 iframe 中并在加载时收到通知

java - 使用 JavaFx 创建 PDF 设计

javascript - Three.js 加载导出的 blender 模型

javascript - 日期时间选择器与 FLATUI 免费版不兼容

Javascript 无法从 HTML 表单调用