如何防止表单

时间:2017-01-17 19:36:51

标签: javascript

所以我试图阻止表单中的所有特殊字符。我只想要数字和字母字符。出于某种原因,如果我只有“232 elm”,那么下面的javascript总是显示特殊字符事件。

我也想使用句号或感叹号。主要是我试图阻止这些“£”¶¶•ªº。我们的用户喜欢使用度数符号而不是拼写“度”。

无论键入什么内容,此代码始终显示警告?

var alphanumers = /^[a-zA-Z0-9]+$/;

if(!alphanumers.test($("#notes").val())){
   alert('You have special characters on instructions field.');
   e.preventDefault();
   return false;
}

2 个答案:

答案 0 :(得分:1)

这对我有用:

HTML:

<h1>DEMO1</h1>
<input type="text" id="data" name="data" onkeyup="checkInput()">


<h1>DEMO2</h1>
<form action="#" method="post" onsubmit="return checkForm(this)">
 <input type="text" id="data2" name="data" value="123abc+-*/">
 <input type="submit">
</form>

使用Javascript:

DEMO1:
    function checkInput(){
        var testit = $('#data').val();
        if( /[^a-zA-Z0-9\-\/]/.test( testit ) ) {
           $('#data').css('background', '#f00');
        }else{
           $('#data').css('background', '#fff');
        }
    }

DEMO2:
    function checkForm( theForm ){
        var testit = $('#data2').val();
        if( /[^a-zA-Z0-9\-\/]/.test( testit ) ) {
           $('#data2').css('background', '#f00');
            return false;
        }else{
           $('#data2').css('background', '#fff');
            return true;
        }
    }

演示:http://codesheet.org/codesheet/dMslCMmZ

答案 1 :(得分:0)

我非常喜欢这个剧本! :

$("input").keydown(function (e) {
    // Allow: backspace, delete, tab, escape, enter and .
    if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 110, 190]) !== -1 ||
         // Allow: Ctrl+A
        (e.keyCode == 65 && e.ctrlKey === true) ||
         // Allow: Ctrl+C
        (e.keyCode == 67 && e.ctrlKey === true) ||
         // Allow: Ctrl+X
        (e.keyCode == 88 && e.ctrlKey === true) ||
         // Allow: home, end, left, right
        (e.keyCode >= 35 && e.keyCode <= 39)) {
             // let it happen, don't do anything
             return;
    }
    // Ensure that it is a number or alphabet and stop the keypress
    if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 90)) && (e.keyCode < 96 || e.keyCode > 105)) {
        e.preventDefault();
    }
});

以下是stackoverflow上的原始来源,它用于输入除了nubers之外的任何内容,我修改了一下,希望它有所帮助!

尝试jsfiddle