在提交

时间:2016-07-28 16:46:55

标签: javascript php

我正在使用一个希望金额为美分的支付系统。

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

表格原样如下:

<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=“012345 />    
</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>

非常感谢任何帮助。

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:0)

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

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

请注意,您必须在表单字段中使用 id 而不是 name