更改文本字段的货币类型

问题描述:

<select data-placeholder="Please select a payment method.." style="width:50%;" class="chosen" onchange="currencyChange(this.value)"> 
    <option value=""></option> 
    <optgroup label="Cash"> 
     <option value="Paypal">Paypal</option> 
     <option value="Bitcoin">Bitcoin</option> 
     <option value="Western Union">Western Union</option> 
     <option value="Delivery">Delivery</option> 
    </optgroup> 
    <optgroup label="Ingame Currency"> 
     <option value="RS3 GP">RS3 GP</option> 
     <option value="OSRS GP">OSRS GP</option> 
    </optgroup> 
</select> 

<script type="text/javascript"> 
var sign = "null"; 
var placement = "null"; 
float budget = "null"; 
function currencyChange(data){ 
    if (data === 'Paypal') { 
     sign = "$"; 
     placement = "before"; 
    } 
    if (data === 'Bitcoin') { 
     sign = "$"; 
     placement = "before"; 
    } 
    if (data === 'Western Union') { 
     sign = "$"; 
     placement = "before"; 
    } 
    if (data === 'Delivery') { 
     sign = "$"; 
     placement = "before"; 
    } 
    if (data === 'RS3 GP') { 
     sign = "M/GP"; 
     placement = "after"; 
    } 
    if (data === 'OSRS GP') { 
     sign = "M/GP"; 
     placement = "after"; 
    } 

    if (placement === 'before') {                
     document.getElementById("budget").value = sign + document.getElementById("budget").value; 
    } 

    if (placement === 'after') {                
     document.getElementById("budget").value = document.getElementById("budget").value + sign;                
    } 
} 
</script> 

我正在尝试更改另一个文本字段的货币类型id="budget",以便根据付款方式的选择添加货币符号。更改文本字段的货币类型

但是在选择付款方式时我没有收到这样的动作。

删除此,它的作品

float budget = "null"; 

而且,

下面添加选择

<input type="text" id="budget"> 

编辑

 if (placement === 'before') {     
      toreplaceaft=document.getElementById("budget").value; 
      toreplacebef=toreplaceaft.replace("$",""); 
      toreplace=toreplacebef.replace("M/GP",""); 
      document.getElementById("budget").value = sign + toreplace.replace("$",""); 
     } 

     if (placement === 'after') {  
      toreplaceaft=document.getElementById("budget").value; 
      toreplacebef=toreplaceaft.replace("$",""); 
      toreplace=toreplacebef.replace("M/GP",""); 
      document.getElementById("budget").value = toreplace+ sign;                
     } 
+0

并[小提琴](HTTP ://的jsfiddle。 net/pee7d6qr /)。 – Regent 2014-09-01 12:53:07

+0

好的,语法无效的结构导致函数执行被中止(正如在浏览器的控制台日志中可以看到的那样)。该代码在功能上仍然不正确,因为更改下拉列表中的选择会导致添加货币符号/缩写词,而不会先删除旧符号/缩写词。所以你会得到$$$ 42M/GP。 – 2014-09-01 12:56:06

+0

编辑我的帖子,好心的看看它 – 2014-09-01 13:06:39

现在,你需要剥去那些“$,男/ GP“的东西从字符串

有了一点帮助从stackoverflow

value = document.getElementById("budget").value; 
value = value.replace(/\D/g,''); //strip non-numeric characters from string 

然后

if (placement === 'before') {                
    document.getElementById("budget").value = sign +" "+ value; 
} 

if (placement === 'after') {                
    document.getElementById("budget").value = value +" "+ sign;                
} 

jsFiddle

试试这个拨弄它不会接受双重标志。

http://jsfiddle.net/pee7d6qr/1/

if (placement === 'before') { 
    if(document.getElementById("budget").value.indexOf("$") == -1){ 
     document.getElementById("budget").value = sign + document.getElementById("budget").value; 
    } 
    else { 
     document.getElementById("budget").value = document.getElementById("budget").value; 
    } 
} 

if (placement === 'after') {  
    if(document.getElementById("budget").value.indexOf("M/GP") == -1){ 
     document.getElementById("budget").value = document.getElementById("budget").value + sign;  
    } 
    else { 
     document.getElementById("budget").value = document.getElementById("budget").value;  
    } 
} 

删除以JavaScript

预算输入元素缺少

<input type="text" name="budget" id="budget" value=> 

使用以下代码浮子可变

if (placement === 'before') {                
    document.getElementById("budget").value = sign + document.getElementById("budget").value.replace(/[^0-9.]/g,''); 
} 

if (placement === 'after') {                
    document.getElementById("budget").value = document.getElementById("budget").value.replace(/[^0-9.]/g,'') + sign;                
}