简体   繁体   English

如果之前输入了错误的值,则Javascript验证不起作用

[英]Javascript validation doesn't work when a wrong value entered before

Guys I have a form like this(an aspx page): http://prntscr.com/8tmvge . 伙计们,我有这样的表格(aspx页面): http : //prntscr.com/8tmvge I wrote validations each of them,And it is working properly. 我写了每个验证,它运行正常。 If user enter numeric value in name textbox (ex),it gives error and I'm clearing that textbox(only that textbox) but enter the accurate value and pressing send button, none of the validations and click events doesn't triggered.I couldn't understand how can I fix this? 如果用户在名称文本框(ex)中输入数字值,则会出现错误,并且我正在清除该文本框(仅该文本框),但输入准确值并按发送按钮,则不会触发任何验证和单击事件。不明白该如何解决? code is below: 代码如下:

Ekle.aspx: Ekle.aspx:

<form id="form1" runat="server">

    <div id="ekle">
        <asp:Table ID="Table1" runat="server">
            <asp:TableRow ID="TableRow1" runat="server">
                <asp:TableCell>Id:</asp:TableCell>
                <asp:TableCell>
                    <asp:TextBox ID="txt1" runat="server" ></asp:TextBox>
                    <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="txt1" />
                </asp:TableCell>
            </asp:TableRow>

            <asp:TableRow ID="TableRow2" runat="server">
                <asp:TableCell>Name:</asp:TableCell><asp:TableCell>
                    <asp:TextBox ID="txt2" runat="server" />
                    <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="txt2" />
                </asp:TableCell>
            </asp:TableRow>

            <asp:TableRow ID="TableRow3" runat="server">
                <asp:TableCell>Surname:</asp:TableCell><asp:TableCell>
                    <asp:TextBox ID="txt3" runat="server"/>
                    <asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ControlToValidate="txt3" />
                    </asp:TableCell>
            </asp:TableRow>

            <asp:TableRow ID="TableRow4" runat="server">
                <asp:TableCell>Sex:</asp:TableCell>
                <asp:TableCell>
                    <span id="spanddl">
                        <asp:DropDownList ID="ddl1" runat="server">
                            <asp:ListItem Value="Bay">Bay</asp:ListItem>
                            <asp:ListItem Value="Bayan">Bayan</asp:ListItem>
                        </asp:DropDownList>
                    </span>
                </asp:TableCell>
            </asp:TableRow>

            <asp:TableRow ID="TableRow5" runat="server">
                <asp:TableCell>Email:</asp:TableCell><asp:TableCell>
                    <asp:TextBox ID="txt5" runat="server" />
                    <asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server" ControlToValidate="txt5" />
                </asp:TableCell>
            </asp:TableRow>

            <asp:TableRow ID="TableRow6" runat="server">
                <asp:TableCell>City:</asp:TableCell><asp:TableCell>
                    <asp:TextBox ID="txt6" runat="server" />
                    <asp:RequiredFieldValidator ID="RequiredFieldValidator5" runat="server" ControlToValidate="txt6" />
                </asp:TableCell>
            </asp:TableRow>

            <asp:TableRow ID="TableRow7" runat="server">
                <asp:TableCell>Age:</asp:TableCell>
                <asp:TableCell>
                    <asp:TextBox ID="txt7" runat="server" /> 
                    <asp:RequiredFieldValidator ID="RequiredFieldValidator6" runat="server" ControlToValidate="txt7" />
                </asp:TableCell>
            </asp:TableRow>

            <asp:TableRow>
                <asp:TableCell>
                    <input id="ekle_gonder" type="button" value="Gönder" />
                </asp:TableCell>
            </asp:TableRow>
        </asp:Table>
    </div>
</form>

ekle.js : ekle.js:

    $(document).ready(function () {

    var result = 1;
    var id, name, surname, email, city, age;

    $("#content").on('click', "#ekle_gonder", function (e) {


        var gender = $("#ddl1 option:selected").text();
        //var gender = document.getElementById('<%= ddl1.ClientID%>');
        //var gender2 = gender.options[gender.selectedIndex].value;

        check();

        var obj = {};
        obj.Id = id;
        obj.Name = name;
        obj.Surname = surname;
        obj.Sex = gender;
        obj.Email = email;
        obj.City = city;
        obj.Age = age;

        if (result == 1) {

            $.ajax({
                type: "post",
                url: "ShowRecord.aspx/ekle_func",
                contentType: "application/json;charset:utf-8",
                data: JSON.stringify(obj),
                dataType: "json",
                success: onSuccess,
                error: function (xhr, status, error) {
                    var err = eval("(" + xhr.responseText + ")");
                    alert(err.Message);
                }
                //complete:printAgain()
            });
        }
    });

    function check() {

        var mailregex = /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;
        var textregex = /^[A-Za-z çğıöşü]{1,25}$/;
        var numregex = /(^\d+$)/;

        id = $("#txt1").val();
        name = $("#txt2").val();
        surname = $("#txt3").val();
        email = $("#txt5").val();
        city = $("#txt6").val();
        age = $("#txt7").val();

        if ((numregex.test(parseInt(id)) == false) || (parseInt(id) < 0)) {
            open_error_box("#ekle_id_error", "#txt1");
        }
        if ((name == '') || (textregex.test(name) == false)) {
            open_error_box("#ekle_name_error", "#txt2");
        }
        if ((surname == '') || (textregex.test(surname) == false)) {
            open_error_box("#ekle_surname_error", "#txt3");
        }
        if ((email == '') || (mailregex.test(email) == false)) {
            open_error_box("#ekle_email_error", "#txt5");
        }
        if ((city == '') || (textregex.test(city) == false)) {
            open_error_box("#ekle_city_error", "#txt6");
        }
        if ((numregex.test(parseInt(age)) == false) || (parseInt(age) < 0) || (parseInt(age) > 100)) {
            open_error_box("#ekle_age_error", "#txt7");
        }
        return result;
    }

    function open_error_box(error_name, name) {
        $(error_name).dialog("open");
        $(name).val('');
        result = 0;
    }

    function onSuccess() {

        $("#txt1").val('');
        $("#txt2").val('');
        $("#txt3").val('');
        $("#txt4").val('');
        $("#txt5").val('');
        $("#txt6").val('');
        $("#txt7").val(''); 
    }

    $(function () {
        $("#ekle").dialog();

        $("#ekle_id_error ,#ekle_name_error, #ekle_surname_error, #ekle_email_error, #ekle_city_error, #ekle_age_error").dialog(
        {
            autoOpen: false,
            buttons: [{
                text: "OK",
                click: function () { $(this).dialog("close"); }
            }]
        });
    });
});

By the way the id='content' selector is in another page.I'm loading Ekle.aspx into a div(in ShowRecord.aspx) when pressed 'ekle' button(inside ShowRecord.aspx again).ANd error dialog boxes are in ShowRecord.aspx also. 顺便说一句,id ='content'选择器在另一页中。当我按下``ekle''按钮(再次在ShowRecord.aspx里面)时,我正在将Ekle.aspx加载到div(在ShowRecord.aspx中)。在ShowRecord.aspx中也可以。

When you clear the textbox, you should change the result value as 1. Your result value just set as 1, when the document is ready. 当您清除文本框时,应将结果值更改为1。在文档准备好后,结果值只需设置为1。 However, if there is something is wrong, you set it as 0, then you never change it as 1. 但是,如果有问题,请将其设置为0,则永远不要将其更改为1。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM