Obter o valor em uma caixa de texto de entrada

1004

Quais são as maneiras de obter e renderizar um valor de entrada usando o jQuery?

Aqui está um:

$(document).ready(function() {
  $("#txt_name").keyup(function() {
    alert($(this).val());
  });
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>
<input type="text" id="txt_name" />

Bharanikumar
fonte
1
use este código: var value = $ ('# txt_Name'). val (); Você também pode definir o valor usando jquery. veja este post em: coding-issues.blogspot.in/2013/10/…
Ranadheer Reddy

Respostas:

1654
//Get
var bla = $('#txt_name').val();

//Set
$('#txt_name').val(bla);
Conrad
fonte
35
@Prabs, a pergunta era: "Quais são as maneiras de obter e renderizar um valor de entrada usando o jQuery?", O rótulo não é uma entrada.
Barry Michael Doyle
3
remova as aspas de 'bla'. Deve ser $ ('# txt_name'). Val (bla);
Charles Xavier
9
@ParbhuBissessar Não necessariamente. Se ele quer o texto literal 'bla', ele está certo. Se ele quer o valdo, var blaentão ele precisa remover as aspas.
double_j
observe o get's: "val ()" em vez de "val", você pode olhar para o meu perfil
TheRedstoneTaco 18/18
Eu fiz isso, mas com problemas.
Wasey Raza
591

Você só pode selecionar um valor das duas maneiras a seguir:

// First way to get a value
value = $("#txt_name").val(); 

// Second way to get a value
value = $("#txt_name").attr('value');

Se você deseja usar o JavaScript direto para obter o valor, veja como:

document.getElementById('txt_name').value 
RJD22
fonte
6
Sei que essa é uma pergunta mais antiga, mas não esqueça que a attrtambém pode ser substituída por prop. Isso é semanticamente melhor.
Sablefoste
$("#txt_name").val(str);funcionou para mim no Chrome para definir o valor. Tente este post .
gkiko
A função de acréscimo do jQuery parece não ter problemas em adicionar ao HTML, mantendo os valores do formulário.
Adam F
1
$ ("# nome_txt"). attr ('valor'); retornar valor padrão / resposta incorreta!
Zloctb
1
lembre-se de que $("#txt_name").attr('value')sempre retornará o conteúdo do atributo "valor"; portanto, se você alterar o campo de entrada, o valor não será alterado. .val()sempre retornará o conteúdo do campo ..
honk31
84

Há uma coisa importante a mencionar:

$("#txt_name").val();

retornará o valor real atual de um campo de texto, por exemplo, se o usuário digitar algo após o carregamento da página.

Mas:

$("#txt_name").attr('value')

retornará valor de DOM / HTML.

Artur79
fonte
40

Você pode obter o valueatributo diretamente, pois sabe que é um <input>elemento, mas seu uso atual .val()já é o atual.

Para o exposto acima, basta usar .valueo elemento DOM diretamente, assim :

$(document).ready(function(){
  $("#txt_name").keyup(function(){
    alert(this.value);
  });
});
Nick Craver
fonte
@Bharan Por que você precisa de uma alternativa?
Doug Molineux
3
em algum lugar, eu gostaria de usar alternativa,
Bharanikumar
16

Você precisa usar várias maneiras de obter o valor atual de um elemento de entrada.

MÉTODO 1

Se você quiser usar um simples .val(), tente o seguinte:

<input type="text" id="txt_name" />

Obter valores da entrada

// use to select with DOM element.
$("input").val();

// use the id to select the element.
$("#txt_name").val();

// use type="text" with input to select the element
$("input:text").val();

Defina o valor como Entrada

// use to add "text content" to the DOM element.
$("input").val("text content");

// use the id to add "text content" to the element.
$("#txt_name").val("text content");

// use type="text" with input to add "text content" to the element
$("input:text").val("text content");

MÉTODO - 2

Use .attr()para obter o conteúdo.

<input type="text" id="txt_name" value="" />

Acabei de adicionar um atributo ao campo de entrada. value=""atributo é aquele que carrega o conteúdo de texto que inserimos no campo de entrada.

$("input").attr("value");

MÉTODO - 3

você pode usar este diretamente em seu inputelemento.

$("input").keyup(function(){
    alert(this.value);
});
Simplans
fonte
15

Você pode obter o valor assim:

this['inputname'].value

Onde thisrefere-se ao formulário que contém a entrada.

SO está cheio de macacos
fonte
8
Esta resposta assume que thisestá se referindo ao formulário que contém a entrada.
Nandan
15

Eu acho que essa função está faltando aqui nas respostas anteriores:

.val( function(index, value) ) 
dilip kumbham
fonte
6

Para obter o valor da caixa de texto, você pode usar a val()função jQuery .

Por exemplo,

$('input:textbox').val() - Obter valor da caixa de texto.

$('input:textbox').val("new text message") - Defina o valor da caixa de texto.

Yuval
fonte
3

Para aqueles que, como eu, são iniciantes em JS e obtêm, em undefinedvez de valor de texto, verifique se o seu idnão contém caracteres inválidos .

Mikhail Sirotenko
fonte
3

Você pode simplesmente definir o valor na caixa de texto.

Primeiro, você obtém o valor como

var getValue = $('#txt_name').val();

Depois de obter um valor definido na entrada como

$('#txt_name').val(getValue);
Muddasir23
fonte
1

Tente isso. Isso funcionará com certeza.

var userInput = $('#txt_name').attr('value')
H.Ostwal
fonte
Não, não vai !! (1) Se não houver atributo "valor" ( <input type="text" />), ele retornará indefinido. (2) Se você gosta isto <input type="text" value="test" />e os tipos de usuários foo no campo de entrada, os $('#txt_name').attr('value')ainda retorna "de teste.
ndsvw
Esta resposta não está correta, mas esta é a API que eu estava procurando.
Anthony