Ir para conteúdo
Fórum Script Brasil
  • 0

setAttribute não funciona


Martinsrj

Pergunta

Olá pessoal, boa noite!

Possuo um formulario que quando o usuario selecionar na combo a opção Pre Agendado apenas os seguinte campos são obrigatórios de ser preenchidos: tipo de chamado, situação, chamado altiris, chamado hp, descrição, data atendimento, hora inicio

Possuo o seguinte código abaixo de JS, porem não estou conseguindo fazer que os campos: txtQAssRS, txtRS, txtHrTermino, txtHrTermino do formulario fiquem com o prrenchimento não obrigatorio quando a opção Pré Agendado estiver selecionado na combo.

/* 
DESCRIÇÃO DO CÓDIGO
Pega o formulário que será validado, lê todos os campos do formulário (for (i=0;i<form.length;i++)) 
Se for obrigatório (if (obrigatorio==1)) verifica se esta em branco (if (form[i].value == ""))
Caso positivo troca a cor do campo para vermelho (mudarCorCampo(form[i], 'red'))
A função mudarCorCampo(elemento, cor) é utilizada para mudar a cor do campo para vermelho e também para branco, quando o usuário estiver corrigindo o campo.
Para que as legendas mudem de cor é necessário usar a tag samp com id igual ao name do input. Ex: <samp id=”Hora”>...<input name=”Hora” ...>
O comando que determina que um campo é obrigatório ou não é o lang, quando ele esta com 1 é obrigatório, quando é 0 não é. Além do lang é necessário o comando onFocus que faz os campos em vermelho mudarem para branco quando o usuário esta corrigindo os dados.
*/

function validaCampoObrigatorio(form) {
    var erro = 0;
    var legenda;
    var obrigatorio;
    //if (varStChamado == "Pré Agendado") {
    var varStChamado = document.getElementById('optSituacao').value;
    //alert(varStChamado);
    //alert("Atenção,21212 Teste!");
    //}
    if (varStChamado == "Pré Agendado") {
        document.getElementById("txtQAssRS").setAttribute('lang', '7');
        document.getElementById("txtRS").setAttribute('lang', '7');
        document.getElementById("txtHrTermino").setAttribute('lang', '7');
        document.getElementById("txtHrTermino").setAttribute('lang', '7');
        //alert(document.getElementById("txtQAssRS").getAttribute("lang"));
    } else {
        document.getElementById("txtQAssRS").setAttribute('lang', '1');
        document.getElementById("txtRS").setAttribute('lang', '1');
        document.getElementById("txtHrTermino").setAttribute('lang', '1');
        document.getElementById("txtHrTermino").setAttribute('lang', '1');
    }

    // alert(document.getElementById('form')[0].value);
    for (i = 0; i < form.length; i++) {
        //alert(varStChamado);        

        obrigatorio = form[i].lang;
        alert(obrigatorio);
        if (obrigatorio == 1) {
            if (form[i].value == "") {
                var nome = form[i].name;
                mudarCorCampo(form[i], '#005EBB');
                legenda = document.getElementById(nome);
                legenda.style.color = "#005EBB";
                erro++;
            }
        }
    }
    if (erro >= 1) {
        alert("Existe(m) " + erro + " campo(s) obrigatório(s) plplpllvazio(s)! ")
        return false;
    } else
        return true;
}

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

Olá Jonathan Queiroz!

Antes de inserir o código abaixo a minha função estava funcionando perfeitamente, verificando cada campo do formulario que possui o lang 1.

Lembrando, se eu retirar o código abaixo o meu formulario funciona direitinho com as validações, porem necessito criar uma situação que quando o usuario selecionar a opção Pré Agendado os campos que estão setados abaixo com o lang 7 não sejam obrigatórios o preenchimento.

Jonathan, você informa que devo comparar com "1" (string) devido a inserção do meu código abaixo?

if (varStChamado == "Pré Agendado") {
        document.getElementById("txtQAssRS").setAttribute('lang', '7');
        document.getElementById("txtRS").setAttribute('lang', '7');
        document.getElementById("txtHrTermino").setAttribute('lang', '7');
        document.getElementById("txtHrTermino").setAttribute('lang', '7');
        //alert(document.getElementById("txtQAssRS").getAttribute("lang"));
    } else {
        document.getElementById("txtQAssRS").setAttribute('lang', '1');
        document.getElementById("txtRS").setAttribute('lang', '1');
        document.getElementById("txtHrTermino").setAttribute('lang', '1');
        document.getElementById("txtHrTermino").setAttribute('lang', '1');
    }

Ao invés de comparar a variável obrigatorio com 1 tente comparar com "1" (string).

Link para o comentário
Compartilhar em outros sites

  • 0

Oi @Martinsrj conseguiu resolver o problema do setAtributte? estou tendo o mesmo erro. olha

function funciona() {
    var n3 = document.getElementById("div_bloco")
    var n4 = document.getElementById("valor")
    var win_l = window.innerWidth
    var win_r = window.innerHeight
    n4.innerHTML = `${win_l} : ${win_r}`
    if (win_l <= 1600) {
        var n5 = document.getElementById("div_bloco")
        var fontes = window.getComputedStyle(n5)
        var fontes = fontes.fontSize
        var fontes = fontes.slice(0, (fontes.length - 2))
        var fontes = Number(fontes)
        var l1 = 1600 - win_l
        var l2 = l1 / 200
        var p = document.getElementById("p")
        var l3 = fontes - l2
        p.innerHTML = `${l1}: ${l2} : ${Math.round(l3)}`
        n5.setAttribute("style", `font-size: ${Math.round(l3)}px;`)
      	alert('teste')
    }
}

A intenção é que a a div#div_bloco tenha a fonte menor dependendo da resolução. até então o codigo funciona perfeitamente, o browser não me da nenhum erro e o alert('teste') é executado, mas nada muda. criei um p que me mostraria o numero que a variavel l3 esta dropando e esta tudo correto. Mas a fonte não muda, o que eu faço?

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...