Lançado Adianti Framework 7.6!
Clique aqui para saber mais
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?

Pacotão Dominando o Adianti Framework 7
O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado! Versão 7.4


Dominando o Adianti 7 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 arquivoapp/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