使用Javascript验证输入文本字段

使用Javascript验证输入文本字段,javascript,forms,validation,onchange,Javascript,Forms,Validation,Onchange,我想我在某个地方犯了一个小错误,但如果有人能发现,我将不胜感激。 我试图在表单字段中输入邮政编码后验证它。类似的代码在PHP中运行良好,但我已经花了数小时,JS似乎没有执行我所做的任何操作。 以下是表单的一部分(全部在正文内标记): 版本2(调用时不带参数): 我尝试绑定到其他事件,但无法发出任何警报。即使是对这些例子的精确复制也不起作用。希望有人能告诉我出了什么问题。您应该使用keyup事件来执行此操作,并使用JS添加事件,而不是内联事件 postcodeRegEx是一个正则表达式,而不是字符

我想我在某个地方犯了一个小错误,但如果有人能发现,我将不胜感激。 我试图在表单字段中输入邮政编码后验证它。类似的代码在PHP中运行良好,但我已经花了数小时,JS似乎没有执行我所做的任何操作。 以下是表单的一部分(全部在正文内标记):

版本2(调用时不带参数):


我尝试绑定到其他事件,但无法发出任何警报。即使是对这些例子的精确复制也不起作用。希望有人能告诉我出了什么问题。

您应该使用
keyup
事件来执行此操作,并使用JS添加事件,而不是内联事件

postcodeRegEx
是一个正则表达式,而不是字符串,您需要删除它周围的引号

函数isValidPostcode(){
var p=document.getElementById('postcode').value.replace(/\s/g');
(a-pr-uwyz(a-pr-UUUYZ){{{{1{[1-1-9[1-1-9[1-9[1-1-9][1-1-9...d????)第124,(a-pr--UUUYZ(a-pr-pr-UUUUYYZ)及(a-pr-pr-UUUUYYYYZ[1[1[1[1[1[1[g][[g][[g][[i][[i][[i][[i][[i][[i][i][[i][[i][[i][i][[i][[i][i][i[i][i[i[i][i][i[i][i[i[i[i[i[i[i[i[i-P-pr-pr-pr-pr-pr-------UUUUUYYYZZZ[abd-hjlnp-uw-z]{2})$/i;
如果(后代码规则测试(p))警报(“正常”);
else alert(“这看起来不是有效的英国邮政编码…”);
}
document.getElementById(“postcode”).addEventListener(“keyup”,function()){
isValidPostcode();
});

您应该用keyup替换onchange,并从regex中删除引号:)


函数isValidPostcode(值){
(a-pr-uwyz(a-pr-UUUYZ){{{{1{[1-1-9[1-1-9[1-9[1-1-9][1-1-9...d????)第124,(a-pr--UUUYZ(a-pr-pr-UUUUYYZ)及(a-pr-pr-UUUUYYYYZ[1[1[1[1[1[1[g][[g][[g][[i][[i][[i][[i][[i][[i][i][[i][[i][[i][i][[i][[i][i][i[i][i[i[i][i][i[i][i[i[i[i[i[i[i[i[i-P-pr-pr-pr-pr-pr-------UUUUUYYYZZZ[abd-hjlnp-uw-z]{2})$/i;
if(postcodeRegEx.test(value))console.log(“OK”);
else console.log(“这看起来不是有效的英国邮政编码…”);
}

首先将
传递到
isValidPostcode()
-
将作为您的输入字段。您在表单上是否有
提交
按钮?由于文本框上的
onchange
仅在按下return键时触发,因此我怀疑return键提交表单,而不是触发文本框上的onchange事件,尽管我不确定。或者您可以尝试验证表单的onsubmit事件中的输入。谢谢大家。然而,这些建议都不管用(还有一些我尝试过的奇怪想法)。Magicprog的片段可以工作,但在复制到我的代码中时不能工作。虽然它会激发任何输入,但我需要等待输入完成。“onchange”文档说,每当光标离开字段时就会触发它(我不关心复制/粘贴)。Javascript没有被禁用,它可以在代码的其他部分工作。我打算放弃,用PHP做验证。关于regex中引用的评论是有效的,谢谢,已解决!你的努力启发了我:)与Javascript无关。必须将脚本位置更改为相对位置,尽管在同一文件夹中的另一个文件中,它的工作方式如图所示-在根目录中。我从来没有充分考虑过为什么同一文件夹中需要同一文件的不同路径。工作解决方案:函数isValidPostcode(value){alert(“called”);/*var p=document.getElementById('postcode').value.replace(/\s/g'))[g][i][[i][[r][[0][[a][[a][a][[a][a][[a][a][a[a-pr-pr-UUUYZ[1}([1[0[0[1-pr-pr-UUYZ[1-p-pr-UUUYYZ[1[1-1-1-1[1[1-1-1[1[1[1-1[1[1-1[1[1[0[0[1[1[1-1-1-1-1-1[1[1-1-9[1-1-9[1-1-1-1-1-9....1-1-1-1-9.1-1-9.1-9.........1-9.......5................................[a-z]{1}](\d[abd-hjlnp-uw-z]{2})$/i;if(postcodeRegEx.test(value))警报(“确定”);其他警报(“这看起来不是有效的英国邮政编码…”;}
<form name ="register" method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" autocomplete="off">

...


<script  type="text/javascript" src="common.js">
             </script>

<input type="text" name="postcode" class="form-control" placeholder="Postcode" maxlength="10"  value='' onchange="isValidPostcode(this.form)"  required />
function isValidPostcode(form) { 
    alert("called");

             var p = document.register.postcode.value;
             var postcodeRegEx = '/^([g][i][r][0][a][a])$|^((([a-pr-uwyz]{1}([0]|[1-9]\d?))|([a-pr-uwyz]{1}[a-hk-y]{1}([0]|[1-9]\d?))|([a-pr-uwyz]{1}[1-9][a-hjkps-uw]{1})|([a-pr-uwyz]{1}[a-hk-y]{1}[1-9][a-z]{1}))(\d[abd-hjlnp-uw-z]{2})?)$/i'; 
             if (postcodeRegEx.test(p)) alert("OK"); 
             else alert("This does not look a valid UK postcode...");
            }
function isValidPostcode() { 
    alert("called");
             var p = document.getElementById('postcode').value.replace(/\s/g,''); 

             var postcodeRegEx = '/^([g][i][r][0][a][a])$|^((([a-pr-uwyz]{1}([0]|[1-9]\d?))|([a-pr-uwyz]{1}[a-hk-y]{1}([0]|[1-9]\d?))|([a-pr-uwyz]{1}[1-9][a-hjkps-uw]{1})|([a-pr-uwyz]{1}[a-hk-y]{1}[1-9][a-z]{1}))(\d[abd-hjlnp-uw-z]{2})?)$/i'; 
             if (postcodeRegEx.test(p)) alert("OK"); 
             else alert("This does not look a valid UK postcode...");
            }
<input type="text" name="postcode" class="form-control" placeholder="Postcode" maxlength="10"  value='' onkeyup="isValidPostcode(this.value)"  required />

function isValidPostcode(value) { 
        var postcodeRegEx = /^([g][i][r][0][a][a])$|^((([a-pr-uwyz]{1}([0]|[1-9]\d?))|([a-pr-uwyz]{1}[a-hk-y]{1}([0]|[1-9]\d?))|([a-pr-uwyz]{1}[1-9][a-hjkps-uw]{1})|([a-pr-uwyz]{1}[a-hk-y]{1}[1-9][a-z]{1}))(\d[abd-hjlnp-uw-z]{2})?)$/i; 
         if (postcodeRegEx.test(value)) console.log("OK"); 
         else console.log("This does not look a valid UK postcode...");
        }