2009-08-21 10 views
1

Lorsque nous tapons 'a d' (un espace d) le .val renvoie un + d en utilisant un signe plus. J'ai besoin de la chaîne de 'a d'? Comment puis-je faire cela?jQuery texbox .val() renvoie + signe pour l'espace

HTML zone de texte

<input type="text" name="term" value="" id="term" title="term" size="30px"/> 

JQuery

function() { $('#results').load('search.aspx', $('#term').val()); } 

Répondre

0

Vous devrez peut-être le décoder sur le serveur. En ASP.NET Server.UrlDecode() fera pour vous. En PHP, il y a aussi une fonction urldecode:

http://us2.php.net/manual/en/function.urldecode.php

+0

Merci à toutes les réponses. server.urldecode fait le travail. Le seul problème est si quelqu'un tape + dans sa recherche. –

+1

C'est là que le JS encodeURIComponent() est pratique ;-) – JorenB

+0

Si vous passez correctement l'encodage et le décodage de l'URL sur le serveur et le client, cela ne devrait pas avoir d'importance pour l'utilisateur. Un test approfondi des champs non-alphnumeric dans les entrées HTML est une partie essentielle du test de toute application Web. –

0

.load est juste une abstraction des méthodes ajax, de sorte que la valeur est URL encodée comme il est envoyé à Search.aspx. Notez-vous l'encodage dans firebug (ou équivalent) ou lorsque vous stockez la valeur sur la page search.aspx?

1

Je suis sûr que le .val() retourne la chaîne parfaitement, mais que le module AJAX fait un peu l'encodage d'URL sur vos données. J'ai rencontré ce problème quelque part aussi ... Attends, je vais essayer de trouver la solution que j'ai utilisée à l'époque.

Edit:

Ceci est le morceau de code qui sérialiser une forme pour moi:

var data = ''; 
for(var i = 0; frm.elements[i] != undefined; i++) { 
    data += frm.elements[i].name + '=' + encodeURIComponent(frm.elements[i].value); 
    if(frm.elements[i + 1] != undefined) data += '&'; 
} 

dans lequel frm est votre forme, évidemment. Vous n'aurez probablement besoin que de la fonction encodeURIComponent() si vous ne soumettez que la chaîne solitaire.

Questions connexes