我正在使用一个希望金额为美分的支付系统。
为避免混淆,我希望我的客户能够输入小数,例如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>
非常感谢任何帮助。
答案 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 。