我想在我的项目中进行客户端验证。 这里的要求是,如果用户提交了空白表单或者他没有记录任何一个输入字段,那么应该生成普通的html列表。 在该列表下,所有输入字段都必须来自谁有错误。 不仅是输入字段,而且它应该是该输入字段的链接。 一旦链接进入该列表,用户就应该能够点击该链接。点击该链接后,他的焦点应该在文本字段上设置。 在这里我可以正确创建链接,但我无法设置焦点。 所以这是我的coffeescript:
$(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()
我正在使用simple_form作为我的HTML。 所以它正在为我生成html:
<div class=' content '>
<form accept-charset="
UTF-8 “action =” / levels / basic-computer / topics“class =” simple_form form-horizontal “enctype =” 多部分/格式数据 “id =” new_topic“method =”post“novalidate =”novalidate“&gt;
<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>
我错在哪里?
答案 0 :(得分:0)
我的印象是只在jQuery对象上使用 .focus()就足够了。
所以理论上只要这个是正确选择的元素,你只需要这样做:
$(this).focus()
另外我注意到你的绑定代码是从$(document).ready块缩进的。
coffeescript $ - &gt; 中的另一个提示是 $(文档).ready ...
的简写例如
$ ->
# do something after the document is ready