2012-05-16 1 views
0

J'ai une fonction jquery qui devrait faire un calcul basé sur une valeur de textbox.Convertir textbox pour flotter indépendamment du nom de la culture, signe de la monnaie?

Ce champ de saisie a une extension MaskedEdit, par défaut, il montre des signes de dollar, et le calcul fonctionne.

Quand j'ajouter la propriété culturename il montre le signe euro, mais le calcul cesse de fonctionner et il retourne NaN

<ajaxToolkit:MaskedEditExtender ID="MaskedEditExtender1" runat="server" 
TargetControlID="TxtVatIncluded" 
Mask="9,999,999.99" 
MessageValidatorTip="true" 
OnFocusCssClass="MaskedEditFocus" 
OnInvalidCssClass="MaskedEditError" 
MaskType="Number" 
InputDirection="RightToLeft" 
DisplayMoney="Left" CultureName="nl-BE" 
/> 




$(document).ready(function() { 
      $("#TxtVatExcluded").focusout(function() { 
       debugger; 
       var invoicedAmmount = $("#MainContent_VehicleInformationControl_LblInvoicePriceValue").text().replace(/[^\d.]/g, ""); 
       if (invoicedAmmount > 0) { 
        var ammountWithoutVat = parseFloat($("#TxtVatExcluded").val().replace(/[^\d.]/g, "")); 
        var result = ((ammountWithoutVat/invoicedAmmount) * 100).toFixed(2); 
        $("#MainContent_LblPercentage").html(result + " %"); 
       } 
      }); 
     }); 
+0

Il semble que cette ligne échoue en raison de l'inclusion du signe Euro 'parseFloat ($ ("# TxtVatExcluded") val() remplacer (/ [^ \ d.]/G, "")..);' – rt2800

Répondre

1

La bibliothèque javascript Globalize peut gérer ce scénario. Une fois que la bibliothèque est initialisé avec le code de langue correcte Globalize.culture(languageCode);, vous pouvez utiliser la version Globalize de parseFloat qui gère les différents symboles de change et des séparateurs numériques. Par exemple,

Globalize.parseFloat('€9,99') retours 9.99 lorsque vous utilisez le code de langue néerlandaise/Belgique.

2

Le format de nombre de nl-BE n'est pas la même chose que en-US. Le numéro 9,999,999.99 est écrit 9.999.999,99. parseFloat9999999.99 mais attend l'expression régulière que vous utilisez pour nettoyer la chaîne supprime les virgules quand elle devrait plutôt supprimer les points et remplacer la virgule par un point.

Questions connexes