Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Javascript正确验证此表单?_Javascript_Validation - Fatal编程技术网

如何使用Javascript正确验证此表单?

如何使用Javascript正确验证此表单?,javascript,validation,Javascript,Validation,我有这样一个javascript表单: <form id="loginForm" name="loginForm" action="/create_session/" method="post">{% csrf_token %} <table border="0" cellpadding="0" cellspacing="0" id="id-form"> <tr> <th valign="top">&

我有这样一个javascript表单:

<form id="loginForm" name="loginForm" action="/create_session/" method="post">{% csrf_token %}
    <table border="0" cellpadding="0" cellspacing="0" id="id-form">
        <tr>
            <th valign="top"></th>
            <td>
                <div class="error_main">
                    <p style="color: #009900; font-size: 13px; font-weight: bold;"><span style="color:red;">{{ server_error }}</span> {{ connec_ok }}{{ successful }}</p>
                </div>
            </td>
            <td></td>
        </tr>
        <tr>
            <th valign="top">Session Name :</th>
            <td>
                <input id="session_name" {{ disabled }} value="{{ session_name }}" name="session_name" class="inp-form" type="text" onchange="validateSessionName()" />
            </td>
            <td id="session_error"></td>
            <td></td>
        </tr>
        <tr>
            <th valign="top">Source Server Path :</th>
            <td>
                <input id="server_path" {{ disabled }} value="{{ server_path }}" name="server_path" onchange="validatePath()" class="inp-form" type="text" />
            </td>
            <td id="path_error"><span style="color:black"><em>Eg: 10.1.1.43:/home/sachet/test_data</em></span>
            </td>
            <td></td>
        </tr>
        <tr>
            <th valign="top">Source username :</th>
            <td>
                <input id="source_username" {{ disabled }} name="source_username" class="inp-form" type="text" onchange="validateUsername()" />
            </td>
            <td id="username_error"></td>
            <td></td>
        </tr>
        <tr>
            <th valign="top">Source Password :</th>
            <td>
                <input id="source_password" {{ disabled }} name="source_password" class="inp-form" type="password" onchange="validatePassword()" />
            </td>
            <td id="password_error"></td>
            <td></td>
        </tr>
        <tr>
            <th valign="top"></th>
            <td>
                <input name="make_default" {{ disabled }} {{ checked }} type="checkbox" id="make_default" />
                <label style="font-size: 13px;" for="make_default">Make the session default</span>
            </td>
        </tr>
        <tr>
            <th>&nbsp;</th>
            <td valign="top">
                <input type="submit" name="create_session" value="Submit" id="submit" class="form-submit" />
                <input type="reset" value="Reset" class="form-reset" />
                <td></td>
        </tr>
    </table>
    <!-- end id-form -->
</form>
当用户单击Submit按钮而不填充任何值时,我想在每个字段的右侧显示字段required。此外,如果用户在填写表单时不满足输入字段的要求,我希望显示无效数据,因此我添加了onchange。我已经完成了onchange部分,现在如果用户提交空表单,我想在每个字段上显示必填字段。以下是我目前掌握的情况:

$(document).ready(function() {

    $("#submit").click(function(){
        var session_name    =   $("#session_name").attr("value");
        var server_path     =   $("#server_path").attr("value");
        var source_username =   $("#source_username").attr("value");
        var source_password =   $("#source_password").attr("value");

        if(session_name==''){
            document.getElementById('session_error').innerHTML="Field Required!";
            document.getElementById('submit').disabled=false;
        }
        else if(server_path==''){
            document.getElementById('path_error').innerHTML="Field Required!";
            document.getElementById('submit').disabled=false;
        }
        else if(source_username==''){
            document.getElementById('username_error').innerHTML="Field Required!";
            document.getElementById('submit').disabled=false;
        }
        else if(source_password==''){
            document.getElementById('password_error').innerHTML="Field Required!";
            document.getElementById('submit').disabled=false;
        }
        else{
            return true;
        }
    });

});

我想提出以下建议:

使用on绑定提交事件 使用显示错误的函数以不重复代码 不使用document.getElementByID您正在使用jQuery 因此,我的代码如下所示:

$(document).ready(function() {

  $("form").on("submit", function(){
    var session_name    =   $("#session_name").val();
    var server_path     =   $("#server_path").val();
    var source_username =   $("#source_username").val();
    var source_password =   $("#source_password").val();

    if(session_name=='')         displayError('#session_error');
    else if(server_path=='')     displayError('#path_error');
    else if(source_username=='') displayError('#username_error');
    else if(source_password=='') displayError('#password_error');
    else                         return true;
  });

  function displayError(element){
    $(element).html("Field Required!");
    return false;
  }
});

桌子里的桌子——我认为你的设计错了。输入表单在语义上可能是表格数据,但其容器很可能不是;字体大小:13px;字体大小:粗体;>-电子战。保留外部div或将类移动到其父类,将其余的移动到error_main class CSS或更具体的类。内联样式打破了关注点与数据/表示的分离,引入冗余,无法从CSS中重写,并且在大多数情况下会导致HTML膨胀。document.getElementById有什么问题?它更长,但也更快,不过我同意。如果jQuery可用,那么使用它会更加一致。$没有问题。除了一致性,请单击。它是作为$的别名实现的。如果只执行displayError,则displayError内的onreturn false不会执行任何操作。。。。返回显示错误。。。可能有用。此外,displayError并不能完成询问者代码所做的一切。如果您可以使用document.getElementById,它的速度更快,您可能知道,请始终如一地使用它。这就是我的观点,$.click和$.on就是风格。返回错误的东西是一个不吉利的猜测。。太糟糕了。这只会在第一个输入字段上显示第二个必填字段,然后提交表单。
$(document).ready(function() {

  $("form").on("submit", function(){
    var session_name    =   $("#session_name").val();
    var server_path     =   $("#server_path").val();
    var source_username =   $("#source_username").val();
    var source_password =   $("#source_password").val();

    if(session_name=='')         displayError('#session_error');
    else if(server_path=='')     displayError('#path_error');
    else if(source_username=='') displayError('#username_error');
    else if(source_password=='') displayError('#password_error');
    else                         return true;
  });

  function displayError(element){
    $(element).html("Field Required!");
    return false;
  }
});