2017-02-28 94 views
0

我有一个非常简单的HTML网页表单分钟VAL ...检查,如果输入的文本字段包含在提交

这是我在数据和序列化到JSON (并最终发送别的地方。但是,现在我正在使用console.log进行测试)。

当用户填写表格,然后然后点击submit;我想简单地检查我的输入文本字段的value,并确保用户在-至少进入了一些更高然后0,但0

 <div> 
      <label>Age 
       <input type="text" name="age"> 
      </label> 
     </div> 

谨以此验证,以之前运行,我的序列化功能,它下面的闪光。本质上,我想在发送数据之前检查或验证它。如果用户输入0,我不想发送。

以下是我的完整JavaScript。 (我仍然无法获得上述的验证功能)。

(function ($) { 
    $.fn.serializeFormJSON = function() { 

     var o = {}; 
     var a = this.serializeArray(); 
     $.each(a, function() { 
      if (o[this.name]) { 
       if (!o[this.name].push) { 
        o[this.name] = [o[this.name]]; 
       } 
       o[this.name].push(this.value || ''); 
      } else { 
       o[this.name] = this.value || ''; 
      } 
     }); 
     return o; 
    }; 
})(jQuery); 

$('form').submit(function (e) { 

     function validateForm(){ // would like to check before below fires for serialize 

      var form = document.getElementById("form"), inputs = form.getElementsByTagName("input"), 

      input = null, flag = true; 
      for(var i = 0, len = inputs.length; i < len; i++) { 
       input = inputs[i]; 
       // if the value is not a valid number or it's less than or equal 0 
       if(isNaN(input.value) || +input.value < 0) { 
        flag = false; 
        input.focus(); 
         console.log("error!"); 
        // break; 
       } 
      } 
      return(flag); 
     } 

    e.preventDefault(); 
    var data = $(this).serializeFormJSON(); 
    console.log(data); 

}); 
+2

你永远不会调用'validateForm()'。另外,'+ input.value <0'应该使用'<= 0'。 – nnnnnn

+0

你可以包含更多的HTML吗?这段代码取决于存在一个id为“form”的表单,这是我们看不到的。还有其他问题,但我们从头开始。 –

回答

1

简单验证号码输入。尝试这个。

$("#submit").on("click", function(){ 
 
    inputValue = $("input[name='age']").val(); 
 
    var num = parseInt(inputValue); 
 
    if(isNaN(num) || num <= 0){ 
 
    console.log(inputValue + " Invalid number!"); 
 
    } else { 
 
    console.log(inputValue + " Valid number!"); 
 
    } 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div> 
 
    <label>Age 
 
     <input type="text" name="age"> 
 
    </label> 
 
</div> 
 
<input type="button" id="submit" value="Submit"\>

+0

所以,这解决了大约一半。谢谢!然而,表单仍然提交任何一种方式;如果表单被视为无效,我不想允许提交... –

+0

使用return false或preventDefault在输入号码无效时忽略提交操作。另一种方法是用正常的按钮代替按钮提交,并在有效时提交表单。 – Rio

-1

为了实现这个目标,我(或多或少),通常这样做:

HTML

<form action="(action url)" id="form" method="post" onsubmit="return validateForm()"> 
    //form contents 
</form> 

JS

function validateForm() { // would like to check before below fires for serialize 
    //var form = document.getElementById("form"), inputs = form.getElementsByTagName("input"), 
    //If you use jQuery, it more preferred to write like this: 
    var form = $('#form'), inputs = form.find('input'), input = null, flag = true; 

    for(var i = 0, len = inputs.length; i < len; i++) { 
     input = inputs[i]; 
     // if the value is not a valid number or it's less than or equal 0 
     if(isNaN(input.value) || +input.value < 0) { 
      flag = false; 
      input.focus(); 
      console.log("error!"); 
     } 
     //do the break 
     if (!flag) break; 
    } 
    if (flag) { 
     var data = $(this).serializeFormJSON(); 
     console.log(data); 
    } 
    return flag; 
} 
+0

@cory对不起,我不知道。我会编辑我的答案。 –

相关问题