jquery - bootstrap - readonly true select




Definir valor do campo oculto em um formulário usando ".val()" do jQuery não funciona (10)

.val não funcionou para mim, porque eu estou pegando o lado do servidor de atributo de valor e o valor nem sempre foi atualizado. então eu usei:

var counter = 0;
$('a.myClickableLink').click(function(event){
   event.preventDefault();
   counter++;

   ...
   $('#myInput').attr('value', counter);
}

Espero que ajude alguém.

Eu tenho tentado definir o valor de um campo oculto em um formulário usando jQuery, mas sem sucesso.

Aqui está um código de exemplo que explica o problema. Se eu mantiver o tipo de entrada em "texto", funcionará sem nenhum problema. Mas, mudando o tipo de entrada para "oculto", não funciona!

<html>

    <head>
        <script type="text/javascript" src="jquery.js">
        </script>
        <script type="text/javascript">
            $(document).ready(function() {
                $("button").click(function() {
                    $("input:text#texens").val("tinkumaster");
                });
            });
        </script>
    </head>

    <body>
        <p>
            Name:
            <input type="hidden" id="texens" name="user" value="texens" />
        </p>
        <button>
            Change value for the text field
        </button>
    </body>

</html>

Eu também tentei a seguinte solução, definindo o tipo de entrada para "texto" e, em seguida, usando um estilo "display: none" para a caixa de entrada. Mas isso também falha! Parece que o jQuery tem algum problema ao configurar campos de entrada ocultos ou invisíveis.

Alguma ideia? Existe uma solução para isso que realmente funciona?


Eu estava tendo o mesmo problema e descobri o que estava errado. Eu tinha o HTML definido como

<form action="url" method="post">
    <input type="hidden" id="email" />
<form>
<script>
    function onsomeevent()
    {
       $("#email").val("[email protected]");
    }
</script>

A leitura dos valores do formulário no servidor sempre resultou em e-mail como vazio. Depois de coçar a cabeça (e várias pesquisas), percebi que o erro não estava definindo o formulário / entrada corretamente. Ao modificar a entrada (como mostrado a seguir), funcionou como um encanto

<input type="hidden" id="email" name="email" />

Adicionando a esta discussão no caso de outros terem o mesmo problema.


Finalmente, encontrei uma solução e é simples:

document.getElementById("texens").value = "tinkumaster";

Funciona como um encanto. Não há idéia de por que o jQuery não recorre a isso.


Na verdade, esse é um problema contínuo. Enquanto Andy está certo sobre a fonte baixada, .val (...) e .attr ('value', ...) não parecem realmente modificar o html. Eu acho que isso é um problema de javascript e não um problema de jquery. Se você tivesse usado o firebug, você teria a mesma pergunta. Embora pareça que, se você enviar o formulário com os valores modificados, o html não será alterado. Eu me deparei com esse problema tentando criar uma visualização de impressão do formulário modificado (fazendo [formulário] .html ()) copia tudo bem, incluindo todas as alterações, exceto as alterações de valores. Assim, minha visualização de impressão modal é um pouco inútil ... minha solução alternativa talvez seja "construir" um formulário oculto contendo os valores que eles adicionaram, ou gerar a visualização independentemente e fazer com que cada modificação feita pelo usuário também modifique a visualização. Ambos são inoptimal, mas a menos que alguém descubra porque o comportamento de definição de valor não muda o html (no DOM eu estou assumindo) terá que fazer.


Outra pegadinha aqui desperdiçou um pouco do meu tempo, então pensei em passar a ponta. Eu tinha um campo oculto que eu dei um id que tinha. e [] colchetes no nome (devido ao uso com struts2) e o seletor $("#model.thefield[0]") não encontraria meu campo oculto. Renomear o ID para não usar os períodos e colchetes fez com que o seletor começasse a funcionar. Então, no final, acabei com um id de model_the_field_0 e o seletor funcionou bem.


Qualquer outra pessoa que esteja lutando com isso, existe uma maneira "inline" muito simples de fazer isso com o jQuery:

<input type="search" placeholder="Search" value="" maxlength="256" id="q" name="q" style="width: 300px;" onChange="$('#ADSearch').attr('value', $('#q').attr('value'))"><input type="hidden" name="ADSearch" id="ADSearch" value="">

Isso define o valor do campo oculto conforme o texto é digitado na entrada visível usando o evento onChange. Útil (como no meu caso) em que você deseja passar um valor de campo para um formulário "Pesquisa avançada" e não forçar o usuário a redigitar a consulta de pesquisa.


Usando val() não funcionou para mim. Eu tive que usar .attr() todos os lugares. Além disso, eu tinha diferentes tipos de entradas e tinha que ser bastante explícito no caso de caixas de seleção e menus selecionados.

Atualizar o campo de texto

$('#model_name').attr('value',nameVal);

Atualizar imagem ao lado da entrada do arquivo

$('#img-avatar').attr('src', avatarThumbUrl);

Atualizar booleano

if (isActive) {
    $('#model_active').attr('checked',"checked");
} else {
    $('#model_active').attr('checked', null) ;
}

Atualizar selecione (com número ou string)

$('#model_framerate').children().each(function(i, el){
    var v = $(el).val();
    if (v === String(framerateVal)) { 
        $(el).attr('selected','selected');
    } else {
        $(el).attr('selected',null);
    }
}

Usando ID:

$('input:hidden#texens').val('tinkumaster');

Usando a classe:

$('input:hidden.many_texens').val('tinkumaster');

Basta usar a sintaxe abaixo de get and set

PEGUE

//Script 
var a = $("#selectIndex").val();

aqui uma variável manterá o valor de hiddenfield (selectindex)

Lado do servidor

<asp:HiddenField ID="selectIndex" runat="server" Value="0" />

CONJUNTO

var a =10;
$("#selectIndex").val(a);

$('input[name=hidden_field_name]').val('newVal');

funcionou para mim, quando nem

$('input[id=hidden_field_id]').val('newVal');

nem

$('#hidden_field_id').val('newVal');

fez.





hidden-fields