代码之家  ›  专栏  ›  技术社区  ›  Husna

清除表单输入字段,包括提交值

  •  0
  • Husna  · 技术社区  · 8 年前

    我正在处理表单验证我想在提交表单后清除字段它的工作正常但是 <input type="submit" value="submit"> 也正在清除,但我只希望输入字段应被清除。我尝试过 reset(); 但是没有添加reset()。在我的代码字段中,这里清除了我做错的地方。 有人能建议我怎么解决这个问题吗?

    提交表格前 enter image description here

    提交表格后 enter image description here

    var Validator = function(formObject) {
        this.form = $(formObject);
       var Elements = {
            text: {
                reg: /^[a-zA-Z]{2,20}$/,
                require : true,
                error: "Not a valid name.",
            },
    
            email: {
                reg: /^[a-z-0-9_+.-]+\@([a-z0-9-]+\.)+[a-z0-9]{2,7}$/i,
                error: "Not a valid e-mail address.",
            },
            phone: {
                reg: /^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/,
                error: "Not a valid number.",
            },
    
            message: {
                reg: /^(?!\s*$).+/,
                error: "Message field cannot be empty.",
            },
            gender: {
              error: "gender is required",
            },
            selectOption: {
              error: "this field is required",
              required: true
          }
        };
    
        var handleError = function(element, message) {
            element.addClass('input-error');
            var $err_msg = element.parent('div');
            $err_msg.find('.error').remove();
    
            var error = $('<div class="error"></div>').text(message);
            error.appendTo($err_msg);
            console.log(element);
    
    
          element.on('keypress change', function() {
                $(error).fadeOut(1000, function() {
                console.log(element);
                element.removeClass('input-error');
                });
            });
    
        };
    
        this.validate = function() {
          var errorCount = 0;
    
          this.form.find("select").each(function(index, field){
             var type = $(field).data("validation");
                var validation = Elements[type];
              if($(field).val() == "") {
                errorCount++;                       
                handleError($(field), validation.error);
              }
          });
    
            this.form.find("input, textarea").each(function(index, field){
                var type = $(field).data("validation");
                var validation = Elements[type];
                if(validation !== undefined) {            
                 var re = new RegExp(validation.reg);                
                 if (validation){                   
                     if (!re.test($(field).val())){ 
                        errorCount++;                       
                        handleError($(field), validation.error);                    
                    }
                 }
             }
            })
    
    
        var radioList = $('input:radio');
        var radioNameList = new Array();
        var radioUniqueNameList = new Array();
        var notCompleted = 0;
        for(var i=0; i< radioList.length; i++){
          radioNameList.push(radioList[i].name);
        }
        radioUniqueNameList = jQuery.unique( radioNameList );
        console.log(radioUniqueNameList);
        for(var i=0; i< radioUniqueNameList.length; i++){
            var field = $('#' + radioUniqueNameList[i]);
            var type = field.data("validation");
               var validation = Elements[type];
            if($('input[name='+type+']:checked', '#test').val() == undefined) {
                errorCount++;   
                handleError($(field), validation.error);
            }
        }
    
        return errorCount == 0;
        };
    };
    
    $(function(){
    
        $('form#test').on('submit', function (e) {
          var NoErrors =  new Validator(this).validate();
         if(NoErrors == true) {
             $.ajax({
                 url: this.action,
                 type: this.method,
                 data: $(this).serialize(),
                 success: function() {
                     // AJAX request finished, handle the results and error msg
                    $('.success_msg').fadeIn().delay(3000).fadeOut();         
                    $('input , textarea').val('').removeClass('error');
    
                 }
             });
    
         }
            return false;
        })
    
    3 回复  |  直到 8 年前
        1
  •  0
  •   Umair Mohammad    8 年前

    根据表单输入元素尝试以下操作:

    $('input[type="text"], textarea').val('');
    

    资信证明: Clearing my form inputs after submission

        2
  •  1
  •   Martin    8 年前

    编辑: 从你编辑过的问题、提供的视觉效果和代码来看,你可能会错误地瞄准你的按钮。在你的代码中,你正在重置 每一个 输入元素。一些css框架使用 <input> 元素与某个 type ,和或, class 创建按钮。


    使用jquery清除输入字段的一个简单方法是将值设置为空字符串。实例:

    重置,目标ID

    $("input#someField").val("");
    

    重置,目标名称

    $("input[name=someName]").val("");
    

    重置,目标类

    $(".someClass").val("");
    

    通过针对特定元素,可以确保希望重置的内容变为重置,而不是其他内容。

    带有复选框的示例:

    重置复选框,目标ID

    $("#idOfCheckbox").attr('checked', false);
    

    重置复选框,目标名称

    $("checkbox[name=nameOfCheckbox]").attr('checked', false);
    

    重置复选框,目标类

    $(".classOfCheckbox").attr('checked', false);
    

    大多数元素都遵循同样的逻辑。

        3
  •  0
  •   Ullas Hunka    8 年前

    您可以在提交输入时放置一个类,然后使用

      $("input:not(.uniqueClass) , textArea")