2013-03-01 98 views
1

我有一个问题,即一旦我的页面被渲染,焦点不会被设置在动态创建的表格/输入的第一个输入元素上。无法获得.focus处理动态创建的输入元素

在.JSP我有以下几点:

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

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

</script> 

有一个包含的.js其中包含buildTable功能

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); 
} 

我曾在几个不同的解决方案here采取一看,herehere和其他人在stackoverflow但无济于事。

我不明白这里的问题。

回答

4

它与动态代码无关。问题是你的jQuery选择器不符合你想要的。你的代码正在寻找一个属性为零的元素。

您需要转义.[]

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

运行例如: http://jsfiddle.net/NC4uz/


jQuery Selector docs

使用任何元字符(如!"#$%&'()*+,./:;<=>[email protected][\]^ {|}〜) as a literal part of a name, it must be escaped with with two backslashes: \\. For example, an element with ID =“富.bar“`,可以使用选择符$(”#foo \ .bar“)。W3C CSS规范包含有关有效CSS选择器的完整规则集。 Mathias Bynens在标识符的CSS字符转义序列上输入。

+0

我必须做以下$(“#shipItems \\ [0 \\] \\。barCode”)。focus();得到我的例子作品 – boyd4715 2013-03-01 14:22:25