1

ページがレンダリングされると、動的に作成されたテーブル/入力の最初の入力要素にフォーカスが設定されないという問題があります。

.jsp には次のものがあります。

<script type="text/javascript">
  $(document).ready(function(){

    if(_page != "one") {
      buildTable(shipQty);
      $('#shipItems[0].barCode').focus();
    }

</script>

buildTable関数を含む.jsが含まれています

function buildTable(shipQty)
{
  var _tbl = $('<table>').attr({
    id : 'barCodeTable',
    border : '1'
  });

  _tbl.append($('<tr>').append($('<td>').text('Box BarCode'),$('<td>').text('INBOUND Tracking Number')));

  for ( var _index = 0; _index < shipQty; _index++)
  {
    var _inputBarCode = $('<input>').attr({
            class : 'form-med',
            type : 'text',
            name : 'shipItems[' + _index + '].barCode',
            id : 'shipItems[' + _index + '].barCode',
            maxlength: '8'
        }).change(_barCodeChange);

    var _shippingTrackingCode = $('<input>').attr({
      class : 'form-med',
      type : 'text',
      name : 'shipItems[' + _index + '].shipCompanyBarCode',
      id : 'shipItems[' + _index + '].shipCompanyBarCode'
    }).change(_trackingNumberChange);

    _tbl.append($('<tr>').append($('<td>').append(_inputBarCode)).append($('<td>').append(_shippingTrackingCode)));

  }

  $('#tableWrap').append(_tbl);
}

hereherehere、およびstackoverflowでいくつかの異なるソリューションを見てきましたが、役に立ちませんでした。

ここの問題がわかりません。

4

1 に答える 1

4

動的コードとは関係ありません。問題は、jQuery セレクターが必要なものと一致しないことです。あなたのコードは、属性がゼロの要素を探しています。

.、、[およびをエスケープする必要があり]ます。

$('#shipItems\\[0\\]\\.barCode').focus();

実行例: http://jsfiddle.net/NC4uz/


jQueryセレクターのドキュメントから:

任意のメタ文字 ( !"#$%&'()*+,./:;<=>?@[\]^{|}~ ) as a literal part of a name, it must be escaped with with two backslashes: \\. For example, an element withid="foo.bar"` など) を使用するには、セレクター $("#foo\.bar" を使用できます。W3C CSS 仕様には、に関する完全なルール セットが含まれています。有効な CSS セレクタ. 識別子の CSS 文字エスケープ シーケンスに関する Mathias Bynens によるブログ エントリも役立ちます.

于 2013-03-01T14:12:13.740 に答える