阻止空间ASP MVC和Javascript

时间:2016-10-11 15:33:04

标签: javascript asp.net asp.net-mvc validation

我正在尝试验证用户在我的视图中输入的代码。我希望它是MAJ,只有字母和数字。所以没有”/(!/或空格。除了空格外一切正常......

这是代码

@Html.TextBoxFor(m => m.Code, new { @onkeydown = "onKeyDown(this);", @class = "input-visual-helper form-control", placeholder = @MyProject.Resources.home.ActivationCode })


            <script type="text/javascript">
            function onKeyDown(a) {
                var charCode = (a.which) ? a.which : event.keyCode

                setTimeout(function () {
                    a.value = a.value.toUpperCase();
                }, 1);

                return ((charCode > 64 && charCode < 91) || (charCode > 96 && charCode < 123) || charCode == 8 || (charCode >= 48 && charCode <= 57));
            }
        </script>

我在返回时做了一个条件的console.log,当我输入空格时代码为false(代码32)。我甚至尝试过if(charCode == 32)返回false。仍然没有工作......界面在文本框中保持空间。

非常感谢任何帮助。

由于

2 个答案:

答案 0 :(得分:1)

        $("#jam").keydown(function (e) {
             if (e.keyCode == 32) { 
               return false; 
             }
        });
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
<script src="https://code.jquery.com/jquery-3.1.0.js"></script>
  
</head>
<body>
<input id="jam"/>
</body>
</html>

这样的东西?

 <script type="text/javascript">
    $("#targetElement").keydown(function (e) {
         if (e.keyCode == 32) { 
           return false; 
         }
    });
 </script>

https://jsbin.com/didohiloni/1/edit

对于MVC文本框,您可以在其中附加new { id = "youid" }

答案 1 :(得分:0)

如果有人想要完整版本的代码

控件:

 @Html.TextBoxFor(m => m.Model.Code, new { @onkeydown= "onKeyDown(this)",  @id = "bindingCode", @class = "input-visual-helper form-control", placeholder = @Resources.home.Code })


 <script type="text/javascript">
            //No spaces and no special characters
            $(document).on('keypress', '#bindingCode', function (event) {
                if (event.keyCode == 32) {
                    return false;
                }
                var regex = new RegExp("^[A-Z0-9]+$");

                var key = String.fromCharCode(!event.charCode ? event.which : event.charCode);
                key = key.toUpperCase();
                if (!regex.test(key)) {
                    event.preventDefault();
                    return false;
                }
            });
          //  All Letters in maj
            function onKeyDown(a) {
                var charCode = a.which;
                setTimeout(function () {
                    a.value = a.value.toUpperCase();
                }, 1);

            }
        </script>