jQuery Validator中的errorPlacement问题

时间:2010-11-03 13:40:19

标签: jquery jquery-validate

我对jQuery Validator插件中的errorPlacement方法有疑问: 我想在div中添加一条错误消息。

在我继续之前...是的,代码很糟糕,我正在一个不属于我的项目中工作,没有文档或任何我帮助过的东西。但我无法从零开始写所有网页。

好的,让我们继续,这是HTML代码的一小部分:

<tr>
  <th height="24" scope="col">
    <div align="left" class="Style69 Style72 Style75">
      <span class="Style77">Name</span>
    </div>
  </th>
  <th height="24" colspan="3" scope="col">
    <div align="left">
      <span class="Style69 Style72 Style75">
        <input id="txtname" name="txtname" class="required"
        type="text" size="30" />
      </span>
    </div>
  </th>
</tr>
<tr>
  <td height="17" colspan="4">
    <div id="errorMessage"></div>
  </td>
</tr>

布局是一个表,并且在此表的内部放置了所有元素(输入框和选择框)。

我的问题是,我如何将错误信息放在div“errorMessage”中?

我正在做这样的事情:

errorPlacement: function(error, element) {
   error.appendTo(element.prev().next().next());
 }

但它不起作用。然后,我试过这个:

errorPlacement: function(error, element) {
   error.appendTo(element.prev().next().next().find("#errorMessage"));
 }

没有任何反应。 “Div”和“Span”标签是DOM的一部分吗?

有任何建议吗?

1 个答案:

答案 0 :(得分:2)

这里的问题是.prev()没有给出任何结果,此处<input>没有先前的兄弟:

  <span class="Style69 Style72 Style75">
    <input id="txtname" name="txtname" class="required"
    type="text" size="30" />
  </span>

这样的事情应该有效:

errorPlacement: function(error, element) {
  element.closest('tr').next().find('.errorMessage').append(error);
}

这使用.closest()前往<tr>,获取.next()兄弟(下一个<tr>)然后.find()获取class="errorMessage"元素里面。

有了这个,请将id更改为类,如下所示:

<div class="errorMessage"></div>