2016-07-28 196 views
0

我正在使用希望以美分输出数量的付款系统。提交表单字段时提交

为了避免混淆,我希望我的客户能够输入十进制的数字123.45而不是12345。我如何更换提交期限以便格式正确?我试图实现onclick JavaScript,但似乎没有得到th语法或定位权。

的形式,因为是在这里:

<form action="https:/….Default.aspx" method="post"> 

<table> <tbody> 
<tr> 
<td>Client Reference:</td> 
<td><input name="orderid" type="text" value=" " /></td> 
<td>e.g. Smith 2017</td> 
</tr> 
<tr> 
<td>Amount in euros:</td> \<td><input name="amount" type="text" value=" " /></td> 
<td>please put the amount in cents instead of using full stop (.) e.g. 12356 instead of 123.56</td> 
</tr> 
<tr> 
<td><input type="submit" value="Pay" /></td> 
<td></td> 
</tr> 
</tbody> 
</table> 

<input name="currency" type="hidden" value="EUR" /> 
<input name="windowstate" type="hidden" value="3" /> 
<input name="merchantnumber" type="hidden" value=“/>  
</form> 

我一直在玩的JavaScript是

onsubmit = “removeperiod()” 

<script type = "text/javascript"> 

function removeperiod() { 

var str = “amountenter” 
str = str.replace(/./,””); 
amountenter = str; // write the de-accented string back into the form field. 
} 
</script> 

任何帮助非常赞赏。

+1

为什么不在后端将他们输入的数量除以0.01? –

+0

强烈建议在服务器端执行此操作,因为您的客户端可能会关闭javascript。除此之外,你需要避开这段时间。 '替换(/\./,“”)' –

+2

你所需要做的只是100的倍数。 – nerdlyist

回答

0

而不是期望您的用户把所需的金额以美分,然后删除小数,如果他们以欧元做它,为什么不期望您的用户把所需的金额以欧元,然后将其转换为美分?

理想情况下,您应该在服务器上处理此转换;修复服务器代码(或告诉谁管理它来修复它),以便它可以接受输入和美元,然后将其转换为美分本身

如果这是不可能的,那么你可以使用JS做到这一点。但是你必须告诉你的客户他们需要启用js。东西替换下面的代码

<td>please put the amount in cents instead of using full stop (.) e.g. 12356 instead of 123.56</td> 

<noscript>Please enable JS, or put the amount in cents instead of using full stop (.) e.g. 12356 instead of 123.56</noscript> 

然后拦截提交并通过onsubmit转换该值来美分;在onsubmit属性(和ID来获取文本元素)添加到您的<form ...>标签有:

<form action="https:/….Default.aspx" method="post" onsubmit="prepareToSubmit" id="form"> 

,然后实现这样的prepareToSubmit功能转换:

<script type = "text/javascript"> 

function prepareToSubmit() { 
    var amountElement = document.getElementById("form").elements["amount"]; 

    //Converts value from euros to cents 
    amountElement.value = Math.round(amountElement.value * 100); 

    return true; 
} 

+0

如果javascript被关闭,不正确的值将被发送到服务器。 –

0

考虑这样做:服务器端和客户端。 对于客户端尝试这样的事:

function removeperiod() { 
    var str = document.getElementById("amount").value; 
    str = str.replace(".",""); 
    document.getElementById("amount").value = str; 
    return true; 
} 

请注意,您必须在您的表单字段使用ID,而不是