2015-10-21 135 views
0

伙计们我有一个像这样的表单(一个aspx页面):http://prntscr.com/8tmvge。我写了他们每个人的验证,并且它正在正常工作。如果用户在名称文本框(ex)中输入数值,它会给出错误,我正在清除该文本框(仅限于该文本框),但输入准确的值并按下发送按钮,则不会触发任何验证和单击事件。无法理解我该如何解决这个问题?代码如下:当验证输入错误值时,Javascript验证不起作用

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:

$(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.!#$%&'*+\/=?^_`{|}~-][email protected][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"); } 
      }] 
     }); 
    }); 
}); 

顺便提及的ID = '内容' 选择器是在另一个page.I'm加载Ekle .aspx当按下'ekle'按钮(在ShowRecord.aspx中再次)时,将其转换为div(在ShowRecord.aspx中).AND错误对话框也位于ShowRecord.aspx中。

回答

0

当您清除文本框时,应该将结果值更改为1.当文档准备就绪时,您的结果值只设置为1。但是,如果出现错误,则将其设置为0,则永远不会将其更改为1.

+0

结果应保持为0,因为如果在发生错误时更改结果= 1,则会将其保存到数据库,不想要它。我只是想删除错误的部分,用户不应该再次输入正确的值。 –

+0

这就是问题所在,它总是1,当出现问题时将其更改为0.但是,解决问题后,应该再次将值更改为1。 –