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?

Curso completo Meu Negócio Pronto
Use para si, ou transforme em um negócio: Inclui aulas e códigos-fontes
Gestor de conteúdo (SITE) + Loja Virtual (E-Commerce) + Emissor de Notas para infoprodutos


Meu negócio pronto 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