Php 如何使用javascript验证表单,以便用户至少输入所需的最小字符数?

Php 如何使用javascript验证表单,以便用户至少输入所需的最小字符数?,php,javascript,forms,Php,Javascript,Forms,我不太懂JS,所以必须使用php strlen()函数。但是我想减少服务器上的负载。这是我的报名表: <blockquote> <form action="<?php echo $_SERVER['PHP_SELF']?>" method="post"> <h3><i>Username </i></h3> <input type="text" name="new_user_name"

我不太懂JS,所以必须使用php strlen()函数。但是我想减少服务器上的负载。这是我的报名表:

<blockquote>
    <form action="<?php echo $_SERVER['PHP_SELF']?>" method="post">
        <h3><i>Username </i></h3> <input type="text" name="new_user_name" size="14" style="width:254px; height:24px; " /><br/>
        <h3><i>Password  </i></h3><input type="Password" name="new_user_password" SIZE="14" style="width:254px; height:24px;" /><br/>
        <h3><i>Email   </i></h3><input type="text" name="new_user_mail" size="14" style="width:254px; height:24px;" /><br/><br/>
        <input type="submit" name="submitok" id="mysubmit" value="Sign Up!" />
    </form>
</blockquote>


您仍然应该进行服务器端检查。依赖客户端输入验证是一个非常糟糕的想法。如果用户禁用了Javascript怎么办?如果用户正在使用自己的表单怎么办

至于你的问题,你可以做以下几点:

<input type="text" id="signupbox" onchange="verifyLength(this)" />
<span id='warning'></span>

(Javascript code)
function verifyLength(e) {
  if (e.value.length > 5) { // Change 5 to whatever you want as your minimum length
    document.getElementById('warning').innerHTML = "Your input is too short!"
  } else {
    document.getElementById('warning').innerHTML = "";
  }
}

(Javascript代码)
函数验证长度(e){
如果(e.value.length>5){//将5更改为您想要的最小长度
document.getElementById('warning').innerHTML=“您的输入太短!”
}否则{
document.getElementById('warning').innerHTML=“”;
}
}
提交时:

document.getElementById('form_id_here').addEventListener('submit', function(e) {
    if (document.getElementById('input_id_here').length < minimum_length_here)
        e.preventDefault();
}, false);
document.getElementById('form_id_here')。addEventListener('submit',函数(e){
if(document.getElementById('input_id_here')。长度<最小长度(minimum_length_here))
e、 预防默认值();
},假);
关于变化:

document.getElementById('input_id_here').addEventListener('change', function(e) {
    if (e.target.length < minimum_length_here)
        // do stuff
    else
        // do other stuff
}, false);
document.getElementById('input_id_here')。addEventListener('change',function(e){
如果(例如,目标长度<此处的最小长度)
//做事
其他的
//做其他事情
},假);
请注意,
.length
测量UTF-16值,如果您的字符位于BMP之外,则UTF-16值与Unicode代码点不同


还要注意的是,您应该保持服务器端检查到位;如果用户禁用JavaScript,而您没有服务器端验证,则可以绕过您的预期限制。

您可以查看以下内容:

查看各种验证方法以及比您要求的更多的方法:


希望这有帮助-它简单易学

有很多方法可以做到这一点。就像Stackoveflow在其注释字段中所做的那样,每次击键都会计算字符数,并告知用户需要多少其他字符,您可以这样做。(我没有运行代码) HtML:


有两种方法,响应的数量证明了这一点。这是另一个,类似于Jared Ng的回答,但使用onkeypress并检查以确保输入不是控制键,否则当您点击限制选项卡时,退格将不适用于您

    <html>
        <head>
            <script type="text/javascript">
                function limit_length(event, max_length) {
                    event = (event) ? event : window.event;
                    var keycode = (event.which) ? event.which : event.keyCode;
                    if (keycode > 48) {
                        if (document.myform.myinput.value.length >= max_length) return false;
                    }
                    return true;
                }
            </script>
    </head>

    <body>
        <form name="myform">
            <input type="text" name="myinput" onkeypress="return limit_length(event, 5)"/>
        </form>
    </body>

函数限制长度(事件,最大长度){
事件=(事件)?事件:window.event;
var keycode=(event.which)?event.which:event.keycode;
如果(键码>48){
如果(document.myform.myinput.value.length>=max_length)返回false;
}
返回true;
}

jQuery与JavaScript不同,OP没有表示他或她正在使用它。这也是不必要的!不要依赖客户端检查!客户端检查很好,但服务器端也必须检查。因为很容易检查cientside(javascript)。
 $('#name input').bind('keydown', function(e){
     if($('#name input')[0].val().length < 5){
     $('#name span').text('You need ' + (5 - $('#name input')[0].val().length ) + 'more charecters');
     }
     else{ $('#name span').text('');}
    });
    <html>
        <head>
            <script type="text/javascript">
                function limit_length(event, max_length) {
                    event = (event) ? event : window.event;
                    var keycode = (event.which) ? event.which : event.keyCode;
                    if (keycode > 48) {
                        if (document.myform.myinput.value.length >= max_length) return false;
                    }
                    return true;
                }
            </script>
    </head>

    <body>
        <form name="myform">
            <input type="text" name="myinput" onkeypress="return limit_length(event, 5)"/>
        </form>
    </body>