如何使用javascript验证预定义的值

时间:2013-03-30 06:44:25

标签: javascript

我在html中有一个输入文本框,我想让用户只是' Y'或者' N'如果他试图输入任何其他字符,那么它应该显示一个警告对话框。那么任何人都可以帮我解决问题吗?

5 个答案:

答案 0 :(得分:2)

jQuery版

$('input').keypress( function( e ){ 

    $(this).val('');

    var code = e.which || e.keyCode ; 

    if ( !( code == 89 || code == 121 || 
            code == 78 || code == 110 ) ){

         alert('you entered wrong key');

         e.preventDefault();                   
    }

});

在jsfiddle http://jsfiddle.net/TTgKF/

上查看

内联javascript版

<input id="keypress" onkeypress="return allowYN( this, event );" />

和allowYN定义为

function allowYN( el, event) {

    event = event || window.event;
    var charCode = (event.which) ? event.which : event.keyCode;

    el.value = '';

    isYN = (charCode == 89  || charCode == 121  || 
            charCode == 78  || charCode ==110 );

    if ( !isYN ) {

            alert('you entered wrong key');
    }

    return isYN;
}

您可以为删除键( 46 ),退格键( 8 )添加例外..

答案 1 :(得分:0)

假设您能够通过ID获取HTML元素,这将检查#myInput元素并仅接受Y或N.

if ((document.getElementById('myInput').value == 'Y') ||
    (document.getElementById('myInput').value == 'N')) {
    // Do stuff if it's correct.
} else {
    alert("You're doing it wrong!");
}

答案 2 :(得分:0)

<html> 
<head>
    <script type="text/javascript">
        function keyPressed(evt)
        {
            var theEvent = evt || window.event;
            var k = theEvent.keyCode || theEvent.which;
            if(k == 89 || k == 78 || k == 8 || k == 46)
                return true;
            else{
                alert("Your Message");
                evt.preventDefault();
                return false;
            }
        }
    </script>
</head>
<body>
    <input type="text" onkeydown="keyPressed(event)" />
</body>
</html>

答案 3 :(得分:0)

如前所述,最好的选择是使用单选按钮:

<input type="radio" name="yn" value="Y">Y<br>
<input type="radio" name="yn" value="N">N<br>

然后将其中一个设置为已选中,或者选中提交选中的一个。或者,您可以使用脚本化输入元素,但这是不明智的:

<script>
function validateYN(element) {
  var errNode = document.getElementById(element.id + '_err');
  if(/^[YN]$/.test(element.value)) {
    errNode.innerHTML = '';
  } else {
    errNode.innerHTML = "You must enter Y or N";
  }
}
</script>

Please enter Y or N: <input name="foo" id="foo" onchange="validateYN(this);"
                      onblur="validateYN(this);">
                     <span id="foo_err"></span>

答案 4 :(得分:0)

你也可以试试这个

 $("input").live('keypress', function(e) {
     if!( code == 89 || code == 121 || 
            code == 78 || code == 110 ) )  { 
            e.preventDefault();
            }
        else //your code