2013-07-06 4 views
0

Я пробую следующий код, но он не работает.Невозможно использовать фокус на ввод текста в html

var option=$('<input type="text" value=""/>'); 
$(this).append($(option)); 
$(option).focus(); 

Я также попытался использовать:

$(this).children().first().focus(); 

Но это тоже не работает.

Вот полная функция:

var templatestring = "<tr><td class='itemId' style='display:none'></td><td id='tdelement' class='Correct'></td><td id='tdelement' class='Option'></td></td><td id='tdelement' class='Action'><input type='button' value='View' onclick='view(this)'/></td><td id='tdelement' class='Remove'><img src='" + STATIC_URL + "img/delete.jpg' width='20' height='20' align='center'></td></tr>"; 
var template = $(templatestring); 
$("#addoption").button().click(function() { 
     var newrow = $(template).clone(); 
     $(newrow).children().each(function() { 
      switch($(this).attr('class')) { 
       case 'itemId': 
        $(this).html(''); 
        break; 
       case 'Option': 
        var option=$('<input type="text" value=""/>'); 
        $(this).append($(option)); 
        $(this).find('input:text').val('11'); 
        $(option).focus(); 

        break; 
       case 'Correct': 
        $(this).html('<input type="radio" class="Answer" name="correct"/>'); 
        break; 
       case 'Action': 
        $('input:button', this).val('Add'); 
        break; 
      } 
     }); 
     $('#datatable tbody').append(newrow); 
    }); 

Если это любая помощь, я использую Google Chrome.

+0

Попробуйте использовать $ (опция) .on ('ready', $ (this) .focus()); –

+0

Не работает :( – Sohaib

+0

Это не проблема, но вам не нужно создавать объект jquery каждый раз, когда вы используете 'option': http://jsfiddle.net/6eH9h/1/ –

ответ

1

Что такое $(this)? Если нет в селекторной функции, то this будет ссылаться на окно. Если вы хотите добавить к телу вы можете сделать, как этот

var option=$('<input type="text" value=""/>'); 
$('body').append($(option)); // You can also use div , selector instead of body 
$(option).focus(); 

TD Demo

HTML

<table> 
    <tr> 
     <td>Add</td> 
    </tr> 
</table> 

JS

$('td').click(function() { 
    var option = $('<input type="text" value=""/>'); 
    $(this).append($(option)); 
    $(option).focus(); 
}); 

После обновления ОП, я могу понять, почему вышеуказанные решения не работают для вас. Вам необходимо позвонить focus после добавления input в table. Попробуйте следующее:

var templatestring = "<tr><td class='itemId' style='display:none'></td><td id='tdelement' class='Correct'></td><td id='tdelement' class='Option'></td></td><td id='tdelement' class='Action'><input type='button' value='View' onclick='view(this)'/></td><td id='tdelement' class='Remove'><img src='" + STATIC_URL + "img/delete.jpg' width='20' height='20' align='center'></td></tr>"; 
var template = $(templatestring); 
var option; 
$("#addoption").button().click(function() { 
    var newrow = $(template).clone(); 
    $(newrow).children().each(function() { 
     switch ($(this).attr('class')) { 
      case 'itemId': 
       $(this).html(''); 
       break; 
      case 'Option': 
       option = $('<input type="text" value=""/>'); 
       $(this).append($(option)); 
       $(this).find('input:text').val('11'); 
       $(option).focus(); 

       break; 
      case 'Correct': 
       $(this).html('<input type="radio" class="Answer" name="correct"/>'); 
       break; 
      case 'Action': 
       $('input:button', this).val('Add'); 
       break; 
     } 
    }); 
    $('#datatable tbody').append(newrow); 
    $(option).focus(); 
}); 
+1

Это элемент if она удовлетворяет вас любопытство. Я не думаю, что вопросы здесь. – Sohaib

+0

Работа '' демо ссылка добавлена ​​в ответ –

+0

какая разница между тем, что я сделал, и это? – Sohaib

Смежные вопросы