我正在尝试验证用户在我的视图中输入的代码。我希望它是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。仍然没有工作......界面在文本框中保持空间。
非常感谢任何帮助。
由于
答案 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>