为什么我的jquery不适用于span标记

时间:2010-04-09 14:51:40

标签: jquery jquery-ui

我正试图在span中显示一些消息。但它没有用。

<script type="text/javascript">
    $(document).ready(function(){
            /****************************First Name validation******************************/
        $("#txtFirstName").bind("focusout",function(){
                if($(this).val()=="" || $(this).val()=="First Name")
                    {
                    $(this).siblings("span[id*='error']").text("First Name Required");
                    $(this).val("First Name");
                    }   
            });

        $("#txtFirstName").bind("focusin",function(){
                if($(this).val()=="First Name")
                    {
                    $(this).siblings("span[id*='error']").show("slow").text("");
                    $(this).val("");                    
                    }   
            }); /********************End First Name validation*****************************/
    });

这是我上面代码的html代码

 <td><input id="txtFirstName" type="text" value="First Name" runat="server"/><span class="error"></span></td>

4 个答案:

答案 0 :(得分:6)

$(this).siblings("span.error").text("First Name Required");

答案 1 :(得分:4)

您必须使用class代替id

$(this).siblings("span[class*='error']").text("First Name Required");

但如果完整的班级名称始终为error,您可以使用span.error甚至更好,如果span始终位于input之后,请使用{{1} }}:

.next()

答案 2 :(得分:3)

Ivo说得对,在这种情况下,您需要span.error作为选择器。不过,作为旁注,您可以通过链接和使用.focusin().focusout()快捷方式简化整个代码:

$(function(){
  $("#txtFirstName").focusin(function(){
      if($(this).val()=="First Name")
          $(this).val("").siblings("span.error").hide();
  }).focusout(function(){
      if($(this).val()=="" || $(this).val()=="First Name")
         $(this).val("First Name").siblings("span.error")
                .text("First Name Required").fadeIn();
  });
});

答案 3 :(得分:0)

对于span选择器,请尝试:span.error

$(this).siblings("span.error").text("First Name Required");