2010-10-04 5 views
0

Ok, donc j'ai ce problème que j'essaie d'aborder. Je cette textfield avec l'id de request_moneyUne suggestion sur la manipulation de texte indésirable dans un champ de texte en ruby ​​sur rails?

<input id="request_money" name="request[money]" size="30" type="text"> 

Dans ce textfield j'ai un watermark plugin that i am using avec le texte « Pas maintenant » qui se passe via jQuery

$("#request_money").Watermark("Not Now"); 

Cela fonctionne bien, mais le problème arrises lorsque Je soumets le formulaire et ce champ est seulement supposé être un champ numérique, mais quand je le soumets vide, il prend le texte "Pas maintenant" et l'envoie. J'ai essayé plusieurs façons de le gérer ... D'abord j'ai essayé avec jQuery comme ceci ...

$('form').submit(function(){ 
if($("#request_money").val("Not now")){ 
$("#request_money").val("") 
} 
}); 

mais pour une raison quelconque, il efface même toutes les valeurs numériques aussi ... semble toujours être vrai, ne sais pas pourquoi

et seconde je l'ai essayé dans le modèle de rails

en utilisant les erreurs

def validate 
    if money == "Not now" 
    money = '' 
end 

Et rails ne pas comme ça ... des suggestions

Répondre

2

Votre if() chèque établit la valeur, il faut obtenir la valeur et vérifiez contre la valeur par défaut, comme ceci:

if($("#request_money").val() == "Not now"){ 
    $("#request_money").val("") 
} 

Selon la façon dont fonctionne votre plugin filigrane, vous pourrez peut-être faire d'une manière générique pour tous les éléments tatouées ... si vous je ne peux pas vous suggère changer le plug-in pour permettre, ou par exemple le stockage du texte en filigrane dans les données, alors vous pourriez faire quelque chose comme:

$(".watermark").val(function(i, v) { 
    return v == $.data(this, "watermark") ? "" : v; 
}); 

Si votre plugin stocké le texte du filigrane comme "watermark"$.data() valeur, et dit appliquer une classe pour identifier facilement les éléments, vous pouvez faire la vérification ci-dessus à easi mais bouclez tout et effacez tout avec une valeur par défaut juste avant la soumission. C'est juste une suggestion, pas sûr du plugin ou du contrôle que vous avez sur lui, mais cela résoudrait ce problème commun avec les filigranes basés sur la valeur.

+0

pas sûr si cela va fonctionner ... j'ai mis à jour ma question avec le plugin – Trace

Questions connexes