SetFocus no componente TDBMultisearch. Olá a todos. Tenho um determinado form e não estou conseguindo setar o foco num componente TDBMultisearch, já tentei de várias formas que eu conheço e nada..., normalmente eu faço assim, em qualquer outro componente dá certo, menos no TDBMultisearch: ...
IF
SetFocus no componente TDBMultisearch.  
Fechado
Olá a todos.
Tenho um determinado form e não estou conseguindo setar o foco num componente TDBMultisearch, já tentei de várias formas que eu conheço e nada..., normalmente eu faço assim, em qualquer outro componente dá certo, menos no TDBMultisearch:
 
  1. <?php
  2. TScript::create('setTimeout(function() { $("input[name='numero']").focus() }, 100);');
  3. ?>


Alguma sugestão?

Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework Quero me inscrever agora!

Comentários (5)


FV

Ivan, ainda não fiz no TDBMultisearch, acredito que se você tentar adicionar um id vai da certo.

ex:

 
  1. <?php
  2. TScript::create('$("#id").focus();');
  3. ?>
IF

Caro Felipe, não deu certo, olha só o código que o Adianti gera para esse campo:
 
  1. <?php
  2. <td><label class="text-danger">Conta (*)</label>
  3. </td>
  4. <td><div><div style="display:inline-block;"><script language='JavaScript'> tdbmultisearch_start( 'conta', '2', '1', 'Buscar', false, 'engine.php?class=AdiantiMultiSearchService&method=onSearch&static=1&database=hibisco&key=id&column=nome&model=Contas&orderColumn=nome&criteria=&operator=like&mask={nome}', '400px', '100px', {"id":26,"text":"Bradesco"}, '92c078bb11b690ff1525b3245c86c2a7', function() {} ); </script><input type="hidden" component="multisearch" name="conta" id="conta" style="width:400px"/></div>
  5. </div>
  6. </td>
  7. ?>

achei estranho , ele gera um input type="hidden", poroso não consigo colocar o foco no campo!! Fiz testes com outros DBMultisearch e ele gera exatamente esse código. E agora? rsrs
PD

Olá pessoal,

Os componentes TDBMultiSearch e TMultiSearch são baseados na select2.
Encontei aqui um post que indica outro método Javascript para ativar o foco, veja:
stackoverflow.com/a/16641154

Att,
Pablo
AM

Não sei se é o que você está procurando, mas eu só sei que eu crio vários aplicativos e sempre deixo o setfocus no primeiro campo Edit (TEntry) do meu formulário de cadastro, eu uso assim:

 
  1. <?php
  2. class EstoqueForm extends TPage
  3. {
  4. protected $form; // form
  5. function __construct()
  6. {
  7. parent::__construct();
  8. // Executa um script que substitui o Tab pelo Enter.
  9. parent::include_js('app/lib/include/application.js');
  10. // Set focus no campo produto
  11. TScript::create('setTimeout(function() { $("input[name=\'produto\']").focus() }, 500);');
  12. // Cria o Form e configura
  13. $this->form = new TQuickForm('form_estoque');
  14. $this->form->setFormTitle('Controle de Estoque');
  15. $this->form->class = 'tform';
  16. $this->form->style = 'width: 920px';
  17. ================================================
  18. Conteúdo deste arquivo: app/lib/include/application.js
  19. $('body').on('keydown', 'input, select, textarea', function(e) {
  20. var self = $(this)
  21. , form = self.parents('form:eq(0)')
  22. , focusable
  23. , next
  24. , prev
  25. ;
  26. if (e.shiftKey) {
  27. if (e.keyCode == 13) {
  28. focusable = form.find('input,a,select,button,textarea').filter(':visible');
  29. prev = focusable.eq(focusable.index(this)-1);
  30. if (prev.length) {
  31. prev.focus();
  32. } else {
  33. form.submit();
  34. }
  35. }
  36. }
  37. else
  38. if (e.keyCode == 13) {
  39. focusable = form.find('input,a,select,button,textarea').filter(':visible');
  40. next = focusable.eq(focusable.index(this)+1);
  41. if (next.length) {
  42. next.focus();
  43. } else {
  44. form.submit();
  45. }
  46. return false;
  47. }
  48. });
PD

O application.js não precisa ser carregado via parent::include_js() pois já é carregado por default no framework.

Att,
Pablo