如何使用javascript验证预定义值

如何使用javascript验证预定义值,javascript,Javascript,我在html中有一个输入文本框,我想允许用户只输入“Y”或“N”,如果他试图输入任何其他字符,则应显示一个警报对话框。那么有人能帮我进入dis吗?假设您能够通过ID获取HTML元素,这将检查#myInput元素,并且只接受Y或N if ((document.getElementById('myInput').value == 'Y') || (document.getElementById('myInput').value == 'N')) { // Do stuff if it

我在html中有一个输入文本框,我想允许用户只输入“Y”或“N”,如果他试图输入任何其他字符,则应显示一个警报对话框。那么有人能帮我进入dis吗?

假设您能够通过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!");
}
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上检查它

内联javascript版本

<input id="keypress" onkeypress="return allowYN( this, event );" />
您可以为删除键(46)、退格键(8)添加异常…


按下功能键(evt)
{
var theEvent=evt | | window.event;
var k=theEvent.keyCode | | theEvent.which;
如果(k==89 | | k==78 | | k==8 | | k==46)
返回true;
否则{
提醒(“您的信息”);
evt.preventDefault();
返回false;
}
}

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

<input type="radio" name="yn" value="Y">Y<br>
<input type="radio" name="yn" value="N">N<br>
Y
N
然后将其中一个设置为选中,或者在提交时选中一个。或者,您可以使用脚本化输入元素,但这是不明智的:

<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>

函数validateYN(元素){
var errNode=document.getElementById(element.id+''u err');
if(/^[YN]$/.test(element.value)){
errNode.innerHTML='';
}否则{
errNode.innerHTML=“必须输入Y或N”;
}
}
请输入Y或N:

您也可以试试这个

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

您可能想看看jQuery的函数,用Javascript验证这一点。提交表单时,您仍然需要在服务器端验证输出。为什么不使用下拉列表或单选按钮?使用onkeypress=“javascript_function_to_validate()”
element.onkeydown=function(){if(!this.value.trim().match(/(Y | N)/)警报('nope');返回false;}
@TamilSelvan-您不应该建议使用内联事件处理程序。这是一个糟糕的做法。一个指向keycode表的链接比一次给他提供一个键的代码要好…@RobG-是的。。。我想我知道这是一个粗略的,主观的联系。虽然我认为大家都认为在线监听器是不好的做法。
<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>
 $("input").live('keypress', function(e) {
     if!( code == 89 || code == 121 || 
            code == 78 || code == 110 ) )  { 
            e.preventDefault();
            }
        else //your code