Javascript 信用卡表单html值长度
我尝试了很多例子,但仍然找不到解决问题的好方法 如果我使用文本字段,那么我的应用程序将截取最后3位数字,使交易无法进行。问题是因为用户可能输入Javascript 信用卡表单html值长度,javascript,jquery,html,forms,credit-card,Javascript,Jquery,Html,Forms,Credit Card,我尝试了很多例子,但仍然找不到解决问题的好方法 如果我使用文本字段,那么我的应用程序将截取最后3位数字,使交易无法进行。问题是因为用户可能输入空格 比如说- 1234 1234 4564 1 当我在(type=“text”)上使用JQuery时,我会过滤字符,但在空格和裁剪方面仍然存在问题 你知道怎么做才能更好吗 我不太喜欢JS的键映射,因为我不知道用户想要如何使用这个空间 这是我的密码- <input class="required" id="field" type="number"
空格
比如说-
1234 1234 4564 1
当我在(type=“text”)上使用JQuery时,我会过滤字符,但在空格和裁剪方面仍然存在问题
你知道怎么做才能更好吗
我不太喜欢JS的键映射,因为我不知道用户想要如何使用这个空间
这是我的密码-
<input class="required" id="field" type="number" min="0000" max="9999" pattern="[0-9]{4}" size="4" name="cvv"/>
<div class="FormInput">
<input name="var_creditcard_no" type="number" id="var_creditcard_no" onkeypress="return Check_mobile_number(event)" maxlength="16" value="<?php echo set_value('var_creditcard_no', '') ?>" placeholder="Credit Card Number *">
<?php echo form_error('var_creditcard_no', '<label class="error">', '</label>') ?>
</div>
var txt='1234 1234 4564 1';
txt=txt.replace(/\s/g');
var valid=txt.match(/([0-9]{16})/g);
如果(有效){
//提交表格
}
您可以使用html5模式来实现这一点
美国运通:
信用卡
[0-9]{13,16}
食客俱乐部
^([30|36|38]{2})([0-9]{12})$
就这样用吧,
pattern="[0-9]{13,16}"
HTML代码
cc number
<br/>
<input class="required" id="field" type="text" maxlength="16" onkeypress="return isNumberKey(event)" name="cc" />max 16
<br/>cvv
<br/>
<input class="required" id="field" type="text" maxlength="4" onkeypress="return isNumberKey(event)" name="cvv" />max 4
cc编号
最多16
cvv
最大4
Js代码
/* isNumberKey
Only allows NUMBERS to be keyed into a text field.
@environment ALL
@param evt - The specified EVENT that happens on the element.
@return True if number, false otherwise.
Source:
http://www.kk-design.com/DevCookbook/JavascriptLibrary/isnumberkey.html
*/
function isNumberKey(evt) {
var charCode = (evt.which) ? evt.which : evt.keyCode;
// Added to allow decimal, period, or delete
if (charCode == 110 || charCode == 190 || charCode == 46) return true;
if (charCode > 31 && (charCode < 48 || charCode > 57)) return false;
return true;
} // isNumberKey
/*isNumberKey
仅允许在文本字段中键入数字。
@环境所有
@param evt-在元素上发生的指定事件。
@如果为数字,则返回True,否则返回false。
资料来源:
http://www.kk-design.com/DevCookbook/JavascriptLibrary/isnumberkey.html
*/
函数isNumberKey(evt){
var charCode=(evt.which)?evt.which:evt.keyCode;
//添加以允许小数、句点或删除
if(charCode==110 | | charCode==190 | | charCode==46)返回true;
if(charCode>31&(charCode<48 | | charCode>57))返回false;
返回true;
}//isNumberKey
我个人不喜欢它,但喜欢它的工作
但也许他们应该为信用卡添加新的html类型,我想所有人都会使用它
.on('input',func)
是您的解决方案。@然后,向支付网关发送数据的形式不是非法的。它讨论的验证问题是用户输入直接改变交易状态。存储信用卡信息是违法的,至少在我国是这样。为什么不直接使用支付网关?在发送数据之前,您将数据存储在服务器中,如果您的服务器遭到黑客攻击,您客户的信用卡信息被盗,您将坐牢(在世界上任何发达国家)。您是否愿意使用插件?如果是的话,也许可以检查一下这个[链接]@thenchanter PCI说存储pan last 4号码可以,你不能存储Cvv和exp日期以及个人信息。我只存储c卡号的最后4位数字,这样更容易重新查找和验证用户。此表单直接发送到支付网关,只有cc编号用于开具发票。但不用担心,这不是pci的问题,这是HTML5的错误,我在小提琴上试过,但pci部分做得不好,但是你提供的js没有解决问题,它将重写空间,但不会解决maxlenght=16后丢失的数字的问题。你唯一能做的就是返回false,不提交表格。如果长度<16,我想我可以写进去。同意:),但我会坚持返回,以完成工作。
cc number
<br/>
<input class="required" id="field" type="text" maxlength="16" onkeypress="return isNumberKey(event)" name="cc" />max 16
<br/>cvv
<br/>
<input class="required" id="field" type="text" maxlength="4" onkeypress="return isNumberKey(event)" name="cvv" />max 4
/* isNumberKey
Only allows NUMBERS to be keyed into a text field.
@environment ALL
@param evt - The specified EVENT that happens on the element.
@return True if number, false otherwise.
Source:
http://www.kk-design.com/DevCookbook/JavascriptLibrary/isnumberkey.html
*/
function isNumberKey(evt) {
var charCode = (evt.which) ? evt.which : evt.keyCode;
// Added to allow decimal, period, or delete
if (charCode == 110 || charCode == 190 || charCode == 46) return true;
if (charCode > 31 && (charCode < 48 || charCode > 57)) return false;
return true;
} // isNumberKey