我有一个Web应用程序,并且正在其中进行一些客户端验证。这是通过添加到每个Asp:TextBox中来完成的

onkeyup="javascript: value_change(this);"


一旦达到价值变化,我就会有了这个Javascript ...

function value_change (text_box) {
    // validate code here
    if (valid) {
        text_box.className = "normalInput";
        document.getElementById("GoButton").disabled = false;
    }
    else {
        text_box.className = "errorInput";
        document.getElementById("GoButton").disabled = true;
    }
}


className对应于CSS类的显着部分,如下所示:-

.normalInput
{
    background-color: #ffffff;
}
.errorInput
{
    background-color: #ff0000;
}


最初显示页面时,此方法工作良好且花哨,但在第一次回发后,尽管调用了该函数,设置了类名和设置了GoButton敏感度(我已经通过调试逐步演示了这一点),但背景色却没有更改。

有谁知道这是为什么,我应该怎么做?

按照@Pete的建议进行编辑,在将新的类名分配给它之后,我立即检查了text_box,看来currentStyle属性保持不变。 currentStyle的特征与normalInput类相同;我调整了它们,然后重新运行以进行检查。因此,我推断出该分配被忽略了,而不是其他CSS以某种方式起作用。

最佳答案

客户端上更改的样式不会发送回服务器。您必须自己在服务器上设置属性以保留它们。服务器从服务器上可用的属性集中建立控件定义,然后重新呈现原始值。这是因为仅文本框的值回发到服务器;其他一切都没有。

话虽如此,您可以解释启用或禁用按钮的条件,设置适当的CSS样式,并在服务器上设置这些属性,或者在文档加载时重新应用样式。

关于javascript - 回传后CSS颜色无法在Javascript中使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15069785/

10-17 03:02