当我使用C#和Javascript输入数字时,我如何删除特殊字符,例如卡号

How can i remove special character when I input a number e.g a Cardnumber Using C# with Javascript

本文关键字:删除 特殊字符 何删除 Javascript 输入 数字      更新时间:2023-09-26

这是我的代码。。。我只需要添加一个代码,当用户把一个数字特别是卡号放进去时,防止出现特殊字符。

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title></title>
    <script type="text/javascript">
        function cc_onchange() {
            var visa_checkcard = /^4[0-9]{12}(?:[0-9]{3})?$/i;
            var master_checkcard = /^5[1-5][0-9]{14}$/i;
            var amex_checkcard = /^3[47][0-9]{13}$/i;
            var jcb_checkcard = /^(?:2131|1800|35'd{3})'d{11}$/i;
            var diners_checkcard = /^3(?:0[0-5]|[68][0-9])[0-9]{11}$/i;
            if (!visa_checkcard.test(document.getElementById('ccform_cardnumber_TB').value)) {
                if (!master_checkcard.test(document.getElementById('ccform_cardnumber_TB').value)) {
                    if (!amex_checkcard.test(document.getElementById('ccform_cardnumber_TB').value)) {
                        if (!jcb_checkcard.test(document.getElementById('ccform_cardnumber_TB').value)) {
                            if (!diners_checkcard.test(document.getElementById('ccform_cardnumber_TB').value)) {} else {
                                document.getElementById("ccform_cardtype_TB").value = "diners";
                            }
                        } else {
                            document.getElementById("ccform_cardtype_TB").value = "jcb";
                        }
                    } else {
                        document.getElementById("ccform_cardtype_TB").value = "amex";
                    }
                } else {
                    document.getElementById("ccform_cardtype_TB").value = "mastercard";
                }
            } else {
                document.getElementById("ccform_cardtype_TB").value = "visa";
            }
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:Label ID="Label1" runat="server" Text="Card No."></asp:Label>
            <asp:TextBox ID="ccform_cardnumber_TB" runat="server" onchange="cc_onchange();"></asp:TextBox>
            <%--<asp:DropDownList ID="ccform_cardtype_TB" runat="server"> <asp:ListItem Value="visa">VISA</asp:ListItem> <asp:ListItem Value="mastercard">Mastercard</asp:ListItem> <asp:ListItem Value="amex">American Express</asp:ListItem> <asp:ListItem Value="jcb">JCB</asp:ListItem> <asp:ListItem Value="diners">Diners</asp:ListItem> </asp:DropDownList>--%>
                <asp:Label ID="Label2" runat="server" Text="Card Type"></asp:Label>
                <asp:TextBox ID="ccform_cardtype_TB" runat="server"></asp:TextBox>
        </div>
    </form>
</body>
</html>

我会检查模糊,而不是每次按键。当人们粘贴数据时,而不仅仅是在键入数据时,这也会引起问题。

如果你的网站以现代浏览器为目标,你可以将输入类型设置为数字,这将让浏览器为你做一些辅助工作(但会删除空格):

<input type="number" />

function checkNum() {
    var x = document.getElementById("cardNum");
    if(isNaN(x.value)){
      // Throw error or alert or whatever
      x.value = "";
    }
    
}
Enter your number: <input type="text" id="cardNum" onblur="checkNum()">

如果你想检查数字,你可以这样检查每个按键:在输入元素中添加onkeyup="test_key(this)"和函数

function test_key(e){
  // check the last character entered
  var val = parseInt(e.value[e.value.length-1]);
  // if it isn't a digit: alert
  if(isNaN(val)){
   alert(e.value);
  }
}

每当用户放入除数字以外的任何其他内容时都会发出警报。