Passar dados de um campo para uma função sem que seja feito um submit()

34 views
Skip to first unread message

Leandro Paz

unread,
Oct 6, 2017, 5:51:34 PM10/6/17
to web2py-users-brazil
Pessoal estou com um pouco de dificuldade para fazer as funções do Models conversarem com as funções em javascript.
Gostaria que sempre que a função getState() do js fosse chamada, o valor que está no campo id_inscricao fosse passado para a função do web2py validar_qrcode(). O código abaixo faz isso entretanto não consigo pegar o valor do campo sem dar um submit().


<form id="form_teste">
Id da Inscrição: <input  id="id_inscricao" name="id_inscricao" class="gatilho" value=''/>
</form>

        <script>
            function getState() {
             
                //document.getElementById('form_teste').submit();
                alert('Teste: '+"{{=str(validar_qrcode(request.vars['id_inscricao']))}}")

            }
        </script>

Carlos Costa

unread,
Oct 6, 2017, 6:41:59 PM10/6/17
to web2py-us...@googlegroups.com
Tem que usar ajax.
As opções são, ajax puro do javascript, funções do jquery ou a função helper do web2py.


ajax("{{=URL('validar_qrcode')", ["id_inscricao"], target)

O legal dessa do web2py é que você pode especificar um target, um div onde o resultado da função remota vai ser colocado.
O chato é isso também, porque ela se limita a isso. 


--
Você recebeu essa mensagem por estar inscrito no grupo web2py-users-brazil.
Para enviar uma mensagem ao grupo, envie email a: web2py-users-brazil@googlegroups.com
Para se desinscrever, envie email a: web2py-users-brazil+unsub...@googlegroups.com
Para mais opções, visite o site do grupo em: http://groups.google.com/group/web2py-users-brazil?hl=en
---
Você recebeu essa mensagem porque está inscrito no grupo "web2py-users-brazil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para web2py-users-brazil+unsub...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.



--


Carlos J. Costa
Cientista da Computação  | BS Computer Science
Esp. Gestão em Telecom   |
PgC Telecom Mangement
<º))><

Leandro Paz

unread,
Oct 7, 2017, 8:50:40 AM10/7/17
to web2py-users-brazil
Obrigado carlos mas ainda não deu.

Usando o que você enviou:

######na view#############
<div  id = "kkk"  name="nome"> teste
</div>

<!-- A função a seguir é chamada por um outro script a qual fica lendo na câmera os qrcode a qual possui o id_inscricao que será o argumento quando tudo estiver funcionando  -->

        <script>
            function getState() {
                argumento='456';
                $("#id_inscricao").val(argumento);

                ajax("{{ =URL('validarqrcode',args=['argumento']) }}", ['nome'], target="kkk")
                // O problema é como passar o valor da variável argumento definida no js, para o args definida em código python?
                // Se retirar as aspas ele procura uma variável python.
                // Será que é mais fácil pegar o valor do campo id_inscricao e passa-lo em args?
            }
        </script>

# no controller # não deu certo do Models!

def validarqrcode():
    qrcode_lido=request.args(0)
    #digito_verificador = sum(int(n) for n in qrcode_lido if n.isdigit())
    #id_com_digito_verificador= str(x.inscricao.id)+'-'+str(digito_verificador)
    # ....
    # ....
    return qrcode_lido #digito_verificador


############################


O problema é como dentro do {{ }} coloco o valor de uma variável javascript ou como pego o valor do campo id_inscricao?

Leandro Paz

unread,
Oct 7, 2017, 4:17:43 PM10/7/17
to web2py-users-brazil
Deu certo com jquery.

                  $.post("../registrar_frequencia/"+argumento,{id_horario:"{{=linha_horario[0].id}}"}, function(result){
                    $("#resultado").html(result);
                    });

Carlos Costa

unread,
Oct 7, 2017, 5:50:44 PM10/7/17
to web2py-us...@googlegroups.com
Isso aí.
Depois dá uma olhada na $.load.
É um atalho para o que você fez. 

--
Você recebeu essa mensagem por estar inscrito no grupo web2py-users-brazil.
Para enviar uma mensagem ao grupo, envie email a: web2py-users-brazil@googlegroups.com
Para se desinscrever, envie email a: web2py-users-brazil+unsub...@googlegroups.com
Para mais opções, visite o site do grupo em: http://groups.google.com/group/web2py-users-brazil?hl=en
---
Você recebeu essa mensagem porque está inscrito no grupo "web2py-users-brazil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para web2py-users-brazil+unsub...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.
Reply all
Reply to author
Forward
0 new messages