Javascript 表单验证保持清除字段

Javascript 表单验证保持清除字段,javascript,jquery,Javascript,Jquery,在尝试插入MySQL数据库之前,我尝试使用jQuery验证文本字段是否为空 因此,在我添加if条件以检查字段是否为空之前,insert工作正常,如果两个字段都为空而不是一个字段,则insert将失败。我添加了IF条件,它总是清除字段并失败保存,即使两个文本字段都已填写 我尝试了几种不同的方法,包括.val()==”,以及.length==0。不知道为什么它总是清除所有字段。任何帮助都将不胜感激 JavaScript文件: $("#sub").click( function() { //Che

在尝试插入MySQL数据库之前,我尝试使用jQuery验证文本字段是否为空

因此,在我添加if条件以检查字段是否为空之前,insert工作正常,如果两个字段都为空而不是一个字段,则insert将失败。我添加了IF条件,它总是清除字段并失败保存,即使两个文本字段都已填写

我尝试了几种不同的方法,包括
.val()==”
,以及
.length==0
。不知道为什么它总是清除所有字段。任何帮助都将不胜感激

JavaScript文件:

$("#sub").click( function() {
  //Check to see that no fields are left blank if one is all fields are cleared and save is failed from insert.php
  if ($("#name").val()==""){
    clearInputs();
    return false;
  }
  else if($("#comment").val()==""){
      clearInputs();
      return false;
  }
  else{
  //save the fields into an array and post to the result span then clear inputs 
  $.post( $("#myForm").attr("action"), 
     $("#myForm :input").serializeArray(), 
     function(info){ $("#result").html(info); 
  });
  clearInput();
  }
});

$("#myForm").submit( function() {
  return false; 
});

function clearInput() {
  $("#name").val('');
  $("#comment").val('');
}

不知道如果其中一个输入为空,为什么要清除这两个输入,而不是只是弹出一条消息,但下面是如何做到的:

var inputs = $('#name, #comment'),
    form   = $("#myForm");

form.on('submit', function(e) {
    e.preventDefault();
    var valid = inputs.filter(function() {
        return $.trim(this.value).length;
    }).length === inputs.length; // all inputs have a value

    if (valid) {
        $.post( form.attr("action"), form.serialize(), function(info){ 
            $("#result").html(info); 
        });
    }else{
        inputs.val('');
    }
});
我从noob(我)的角度给出这个“答案”。我在我的一些作品中使用了这种风格。它显然没有阿迪内奥的优雅

这是一把小提琴

HTML

JS

$('clickme')。单击(函数(){
var nametext=$('#name').val();
var commenttext=$('#comment').val();
if(nametext.length<1 | | commenttext.length<1)
{
警报(“两个字段都需要文本”);
$(':input').val('');
}
其他的
{
警报('Query sent');//此处为ajax/post函数
$(':input').val('');
}
});

我看不出操作码到底哪里错了(除了拼错了“clearInput”)。@Pointy-既然你已经指出了,我也不知道!只是复制了代码并重写了大部分代码,使其更具逻辑性,并且没有真正费心测试错误@adeneo我试过了,但如果两个文件都填写了,它仍然无法保存。@adeneo修复了它。您的代码总是清除字段。您确定没有在服务器端更改某些内容吗?您是否尝试过从浏览器控制台检查POST事务的实际内容?你得到的代码应该可以工作——如果你注释掉验证测试,它还能工作吗?
<button id='clickme'>CLICK</button>
<div>Name:<input id='name' type='text'></div>
<div>Comment:<input id='comment' type='text'></div>
button {
    margin: 10px auto;
}
div {
    margin: 10px auto;
}
   $('#clickme').click(function(){
     var nametext = $('#name').val();
     var commenttext = $('#comment').val();
     if (nametext.length < 1 || commenttext.length < 1)
        {
         alert('Both fields need text');
         $(':input').val('');      
         }
        else
        {
         alert('Query sent');//ajax/post function here
         $(':input').val('');
         }
                                   });