【问题标题】:Jquery .after functionJquery .after 函数
【发布时间】:2014-04-14 05:33:23
【问题描述】:

以下代码来自.aspx文件

<div class="clearfix" style="margin-bottom: 10px">
   <span class="spinfo">Name:</span>
   <div>
        <asp:TextBox runat="server" ID="txtname"></asp:TextBox>
    </div>
</div>

以下代码来自.css文件:

.spana1{
    background-position: left center;
    color: #c80000;
    background-image: url('symbol-error.png');
    background-repeat: no-repeat;
    padding-left: 17px; 
}

下面的代码来自.js文件

var error = true;    
$(document).ready(function () {
    $("#txtname").focusout(function () {
        error = false;
        $(".spana1").remove();
        if ($("#txtname").val() == "") {
            $("#txtname").after("<span class='spana1'>Please Enter your Name</span>");
            error = true;
        }
    });
});

#txtname 失去焦点,如果它的内容等于 null ,这个 raw 应该被称为:$("#txtname").after("&lt;span class='spana1'&gt;Please Enter your Name&lt;/span&gt;");

但结果是这样的:

但我使用了 .after 。当我尝试.before 结果是一样的。

可能是什么原因?

【问题讨论】:

  • 使用 .append 就可以了
  • @Mustafa M Jalal ,我试过但没用。

标签: jquery css asp.net twitter-bootstrap validation


【解决方案1】:

尝试使用 CSS 之类的 input element 中的 floating

#txtname{
   float:left;
}

也可以使用$(this),而不是一次又一次地重复使用同一个选择器,

$(document).ready(function () {
    $("#txtname").focusout(function () {
        error = false;
        $(".spana1").remove();
        if (this.value == "") { // you can use $(this).val() also
            $(this).after("<span class='spana1'>Please Enter your Name</span>");
            error = true;
        }
    });
});

【讨论】:

  • 谢谢你,它有效,也感谢你对 .js 的建议。你能解释为什么我的结果是这样的吗?如果我不使用 float:left,它可能是 TextBox 的底部,但为什么之前呢?我会在 5 分钟内接受。
  • 这是因为在span element 上浮动,如果你在控制台中检查它,那么你可以看到它。在input 上应用浮点数后,它将显示在您的错误元素之前的left first 中。
猜你喜欢
  • 1970-01-01
  • 2021-11-17
  • 2017-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-09
相关资源
最近更新 更多