0

我想在我的项目中进行客户端验证。这里的要求是,如果用户提交了空白表单或者他没有输入任何一个输入字段,那么应该生成正常的 html 列表。在该列表下,所有输入字段都应该来自有错误的人。不仅是输入字段,还应该是该输入字段的链接。一旦链接进入该列表,那么用户应该能够单击该链接。单击该链接后,他的焦点应该设置在文本字段上。在这里我可以正确创建链接,但我无法设置焦点。所以这里是我的咖啡脚本:

$(document).ready ->
# first fetch all input field who have  errors.
  errorElements = $('.content').find('.help-inline').prev()
  ul = $('<ul id="errorlist"></ul>')
  errorElements.each (i) ->
    span = $(this).next()
    labelText = $(this).parent().parent().find('label')
    $(' <li> <a href="#' + $(this).attr('id') + '" class="errorlink" >' + labelText.text() + ' ' + '(' + span.text() + ')' + '</a></li>').appendTo(ul)
  $('#errorcontainer').html(ul)
$(".errorlink").bind "click", (e) ->
  # first I am checking it is binding or not.
  alert('hello')
  $(this).attr(‘href’).setFocus()

我正在为我的 html 使用 simple_form。所以它像这样为我生成html:

  <div class=' content '>


<form accept-charset="

UTF-8 " action=" /levels/basic-computer/topics" class=" simple_form form-horizo​​ntal " enctype=" multipart/form-data " id=" new_topic " method=" post " novalidate=" novalidate ">

  <div style=" margin:0;padding:0;display:inline ">

<div class=' form-inputs'>
  <div class=" control-group string required topic_title error ">
  <label class=" string required control-label " for=" topic_title ">
  <abbr title=" required ">
  *
  </abbr>
  Title
  </label>
  <div class=" controls ">
  <input class=" string required " id=" topic_title " name=" topic[title] " size=" 50 " type=" text " value="" />
  <span class=" help-inline ">
  can't be blank
  </span>
  </div>
  </div>

我在这里错了什么?

4

1 回答 1

0

我的印象是只在 jQuery 对象上使用.focus()就足够了。

jQuery API 文档:焦点

所以理论上只要是正确选择的元素,你只需要这样做:

$(this).focus()

此外,我注意到您的绑定代码已从 $(document).ready 块中突出。

coffeescript $ ->中的另一个提示是$(document).ready的简写...

例如

$ ->
    # do something after the document is ready
于 2013-09-12T18:52:40.907 回答