none
Readonly no javascript RRS feed

  • Pergunta

  • Oi!!
    Estou montando um formulário com mais de 30 caixa de texto. Dentro de um javascript estou montando uma condição que se confirmada bloqueia todos os campos ou não. Mas eu ñ queria referenciar o nome de cada caixa de texto no javascript usando o readOnly.

    Gostaria de saber se tem algum método generalizado para bloquear uma caixa de texto sem ter q colocar o nome ou o id. Com isso seria só colocar o nome da function no onchange da caixa de texto. Tem como fazer isso???

    document.getElementById('teste').setAttribute('readOnly','');
    document.forms[i].elements[j].readOnly = true;   
    document.nomeDoForm.nomeDoCampo.readonly = true;
    document.getElementByID("campo").readOnly="";
    

    Essas foram as diversas formas q achei, mas tds referenciam diretamente a uma caixa de texto, queria algo generalizado.

    Att.
    sexta-feira, 9 de outubro de 2009 03:28

Respostas

  • Para simplificar:

    Javascript:
    <script type="text/Javascript">
    function desabilitaControle(controle)
    {
    controle.readOnly = true;
    }
    </script>


    Campo Texto (input ou asp:TextBox)

    <input type="text" onchange="desabilitaControle(this);"/>
    <asp:TextBox id="txt1" runat="server" onchange="desabilitaControle(this);"/></asp:TextBox>

    Repare que no evento onchange do controle eu chamo a função passando o próprio controle como parâmetro (this), fazendo isto
    eu não fico preso em nomes, como você quer.

    Ai basta você implementar a função da forma como você precisar pois o que mostro acima é um exemplo.

    Att,



    Se o post foi útil marque como resposta. - Advanced Web Application - MCP
    • Marcado como Resposta FCarvalho quarta-feira, 14 de outubro de 2009 18:51
    sexta-feira, 9 de outubro de 2009 15:43
  • eh vamos por parte entao:

    na imagem abaixo e onde que fica o HTML onde voce vai inserir o script(Que fica dentro do Source):

    1

    Para poder inserir o codigo no Page_Load basta voce clicar com o botao direito do mouse em cima da pagina desejada e clica em View Code como mostra a imagem acima.
    Apois isso ira aparecer onde que fica o Page_Load, como mostra na imagem abaixo:

    2

    qualquer duvida pode postar.
    • Marcado como Resposta FCarvalho quarta-feira, 14 de outubro de 2009 18:51
    sexta-feira, 9 de outubro de 2009 15:48

Todas as Respostas

  • Oi!!
    Estou montando um formulário com mais de 30 caixa de texto. Dentro de um javascript estou montando uma condição que se confirmada bloqueia todos os campos ou não. Mas eu ñ queria referenciar o nome de cada caixa de texto no javascript usando o readOnly.

    Gostaria de saber se tem algum método generalizado para bloquear uma caixa de texto sem ter q colocar o nome ou o id. Com isso seria só colocar o nome da function no onchange da caixa de texto. Tem como fazer isso???

    document.getElementById('teste').setAttribute('readOnly','');
    document.forms[i].elements[j].readOnly = true;   
    document.nomeDoForm.nomeDoCampo.readonly = true;
    document.getElementByID("campo").readOnly="";
    

    Essas foram as diversas formas q achei, mas tds referenciam diretamente a uma caixa de texto, queria algo generalizado.

    Att.
    Tem como sim:
    Dentro do seu Page_Load da aplicação voce pode colocar o seguinte codigo:

    nomedoTextBox.Attributes.Add("onchange","funcaojavascript()");


    mas ai vc tem que fazer isso para todos os textBox
    sexta-feira, 9 de outubro de 2009 11:19
  • Oi Daniel!

    Dentro da Page_Load?!?!

    E como ficaria a function?!?!
    sexta-feira, 9 de outubro de 2009 13:02
  • Oi Daniel!

    Dentro da Page_Load?!?!

    E como ficaria a function?!?!
    A function vc vai colocar dentro do Html
    ex:


    <script type="text/Javascript">
    function funcaojavascript()
    {
    ... aqui vc vai colocar a sua função readOnly
    }
    </script>


    e no Code Bind onde fica o Page_Load
    vc coloca o que eu te falei:


    nomedoTextBox2.Attributes.Add("onchange","funcaojavascript()");
    nomedoTextBox3.Attributes.Add("onchange","funcaojavascript()");
    nomedoTextBox4.Attributes.Add("onchange","funcaojavascript()");
    nomedoTextBox5.Attributes.Add("onchange","funcaojavascript()");

    entendeu ???
    sexta-feira, 9 de outubro de 2009 13:22
  • Oi Daniel!

    Dentro da Page_Load?!?!

    E como ficaria a function?!?!
    A function vc vai colocar dentro do Html
    ex:


    <script type="text/Javascript">
    function funcaojavascript()
    {
    ... aqui vc vai colocar a sua função readOnly
    }
    </script>


    e no Code Bind onde fica o Page_Load
    vc coloca o que eu te falei:


    nomedoTextBox2.Attributes.Add("onchange","funcaojavascript()");
    nomedoTextBox3.Attributes.Add("onchange","funcaojavascript()");
    nomedoTextBox4.Attributes.Add("onchange","funcaojavascript()");
    nomedoTextBox5.Attributes.Add("onchange","funcaojavascript()");

    entendeu ???

    Essa lógica eu entendi só ñ estou sabendo identificar o termo "code bind" e "page_load".

    Sou nova nisso, ainda estou me localizando nos termos.
    Eles se localizam onde no código?

    E a parte:
    <script type="text/Javascript">
    function funcaojavascript()
    {
    ... aqui vc vai colocar a sua função readOnly
    }
    </script>
    

    é essa a minha dúvida, como ficaria o código. Nas opções q achei acima, junto ao readOnly eu tenho q usar o nome do textbox, no seu exemplo eu só usaria o nome depois, mas assim mesmo fico sem saber como ficaria o código com ReadOnly na function.
    sexta-feira, 9 de outubro de 2009 13:49
  • Para simplificar:

    Javascript:
    <script type="text/Javascript">
    function desabilitaControle(controle)
    {
    controle.readOnly = true;
    }
    </script>


    Campo Texto (input ou asp:TextBox)

    <input type="text" onchange="desabilitaControle(this);"/>
    <asp:TextBox id="txt1" runat="server" onchange="desabilitaControle(this);"/></asp:TextBox>

    Repare que no evento onchange do controle eu chamo a função passando o próprio controle como parâmetro (this), fazendo isto
    eu não fico preso em nomes, como você quer.

    Ai basta você implementar a função da forma como você precisar pois o que mostro acima é um exemplo.

    Att,



    Se o post foi útil marque como resposta. - Advanced Web Application - MCP
    • Marcado como Resposta FCarvalho quarta-feira, 14 de outubro de 2009 18:51
    sexta-feira, 9 de outubro de 2009 15:43
  • eh vamos por parte entao:

    na imagem abaixo e onde que fica o HTML onde voce vai inserir o script(Que fica dentro do Source):

    1

    Para poder inserir o codigo no Page_Load basta voce clicar com o botao direito do mouse em cima da pagina desejada e clica em View Code como mostra a imagem acima.
    Apois isso ira aparecer onde que fica o Page_Load, como mostra na imagem abaixo:

    2

    qualquer duvida pode postar.
    • Marcado como Resposta FCarvalho quarta-feira, 14 de outubro de 2009 18:51
    sexta-feira, 9 de outubro de 2009 15:48
  • Para simplificar:

    Javascript:
    <script type="text/Javascript">
    function desabilitaControle(controle)
    {
    controle.readOnly = true;
    }
    </script>


    Campo Texto (input ou asp:TextBox)

    <input type="text" onchange="desabilitaControle(this);"/>
    <asp:TextBox id="txt1" runat="server" onchange="desabilitaControle(this);"/></asp:TextBox>

    Repare que no evento onchange do controle eu chamo a função passando o próprio controle como parâmetro (this), fazendo isto
    eu não fico preso em nomes, como você quer.

    Ai basta você implementar a função da forma como você precisar pois o que mostro acima é um exemplo.

    Att,



    Se o post foi útil marque como resposta. - Advanced Web Application - MCP

    Certo mas como Default do visual studio o asp:TextBox nao tem o atributo onchange, voce tem que inserir via codigo como eu mostrei no post acima.
    sexta-feira, 9 de outubro de 2009 15:52
  • Não aparece no intelissense daniel, mas se você inserir no código Html funciona, pois como a renderização de um textBox é um input que por sua vez possui este atributo.

    Sempre fiz assim e nunca tive problema, apesar de já ter utilizado o .Attributes.Add também.

    O importante é que das duas formas funciona.

    Se o post foi útil marque como resposta. - Advanced Web Application - MCP
    sexta-feira, 9 de outubro de 2009 15:58
  • Não aparece no intelissense daniel, mas se você inserir no código Html funciona, pois como a renderização de um textBox é um input que por sua vez possui este atributo.

    Sempre fiz assim e nunca tive problema, apesar de já ter utilizado o .Attributes.Add também.

    O importante é que das duas formas funciona.

    Se o post foi útil marque como resposta. - Advanced Web Application - MCP
    Sem problemas dos dois geito funciona, o problema e que do geito que vc informou em alguns Visual Studio fica acusando erro, dependendo nao deixa nem rodar a aplicação.
    do seu geito e bem mais rapido(logico).
    sexta-feira, 9 de outubro de 2009 16:20
  • Marcus funcionou o modo q vc apresentou acima:

    <script type="text/Javascript">
    function desabilitaControle(controle)
    {
    controle.readOnly = true;
    }
    </script>


    Campo Texto (input ou asp:TextBox)

    <input type="text" onchange="desabilitaControle(this);"/>

    Vlw!!

    Daniel, vlw por tirar a minha dúvida em relação ao Page_Load, já ñ era a 1ª vez q lia sobre isso e ñ sabia onde q aparecia.

    Obrigada!!!
    quarta-feira, 14 de outubro de 2009 18:51