我有一个 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/