我正在尝试在texbox有焦点时更改标签的颜色
<div class="editor-label">
<%: Html.LabelFor(model => model.FirstName) %>
</div>
<div class="editor-field">
<%: Html.TextBoxFor(model => model.FirstName) %>
<%: Html.ValidationMessageFor(model => model.FirstName) %>
</div>
这是我的javascript
$(':text').focus(function () {
$(this).prevAll("label").last.css("color", "blue");
});
$(this).prevAll()
始终为空。但$(this).next()
和$(this).nextAll()
有一个范围
请帮助我真的很感激任何帮助
答案 0 :(得分:2)
$(this).prevAll("label")
为空,因为prevAll("label")
会查找文本框的标签同级。你应该做这样的事情:
$(':text').focus(function () {
$(this).parent("div").prev().find("label").css("color", "blue");
});
next()
和nextAll()
返回一个范围,因为以下代码将呈现为span,这是文本框之后的下一个元素。
<%: Html.ValidationMessageFor(model => model.FirstName) %>
答案 1 :(得分:1)
您可以尝试使用jQuery attr找到它 类似的东西:
$('label[for="FirstName"]').css("color", "blue");
(未经测试,抱歉!)
答案 2 :(得分:1)
根据我的理解,你可以做这样的事情:
$('div.editor-field input').focus(function () {
$('div.editor-label label').css({"color":"black"});//Reset color for all labels
$(this).parent().prev().find('label').css({"color":"blue"});
});
答案 3 :(得分:1)
这就是我做的事情
<script type="text/javascript">
$(':text').focus(function () {
$(this).closest('div').prev().children('label').addClass("selected");
});
$(':text').blur(function () {
$(this).closest('div').prev().children('label').removeClass("selected")
});
</script>
请告诉我你的想法。