0

プロジェクトでクライアント側の検証を行いたいです。ここでの要件は、ユーザーが空白のフォームを送信した場合、または入力フィールドを 1 つもフィールドしなかった場合、通常の 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 $ ->のもう 1 つのヒントは、 $(document).ready...の省略形です。

例えば

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