Javascript “如何使用jQuery的form.serialize但排除空字段”不起作用(对于php)

Javascript “如何使用jQuery的form.serialize但排除空字段”不起作用(对于php),javascript,php,jquery,Javascript,Php,Jquery,我想用,但不起作用。我使用了一个重定向到php脚本的简单示例: <html><head> <script src="jquery.min.js"></script> <script type="text/javascript"> $(document).ready(function(){ $('#myForm').submit(function(){ $("#myForm :input[value!='']").

我想用,但不起作用。我使用了一个重定向到php脚本的简单示例:

<html><head>
<script src="jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
    $('#myForm').submit(function(){
        $("#myForm :input[value!='']").serialize();
        alert('JavaScript done');
    });
});
</script>
</head>


<body>
    <form id="myForm" action="php.php" method="get">
       <input id=id1 name=name1 type="text" /><br>
       <input id=id2 name=name2 type="text" /><br>
       <input id=id3 name=name3 type="text" /><br>
       <input id=id4 name=name4 type="text" />
       <input type="submit" value="submit form"/>
    </form>
</body></html>
因此,所有字段都进入get参数

你能帮帮我吗


TIA

您不能对值使用属性选择器,因为它是一个不断变化的属性

使用

演示:

注意:仅序列化输入字段在表单提交中不会改变,只有通过ajax提交表单时才能使用

如果您希望进行常规表单提交,但希望删除空字段,请使用


不能对值使用属性选择器,因为它是一个不断变化的属性

使用

演示:

注意:仅序列化输入字段在表单提交中不会改变,只有通过ajax提交表单时才能使用

如果您希望进行常规表单提交,但希望删除空字段,请使用


您需要AJAX表单-仅调用serialize不会从请求中删除字段


您需要AJAX表单-仅调用serialize不会从请求中删除字段


您可以使用ajax进行尝试,并在php文件中获取数组数据,请参见下面的代码

<html><head>
<script src="jquery-1.7.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
    $('#submit_form').click(function(e){
    $("#myForm :input[value!='']").serialize();
    var form_data= $("#myForm :input[value!='']").serializeArray();
    $.post("php.php",form_data,function(data){
         alert('JavaScript done');
    },"json");      
   e.preventDefault();

   });


});
</script>
</head>


<body>
<form id="myForm">
   <input id=id1 name=name1 type="text" /><br>
   <input id=id2 name=name2 type="text" /><br>
   <input id=id3 name=name3 type="text" /><br>
   <input id=id4 name=name4 type="text" />
   <input type="submit" id="submit_form" value="submit form"/>
</form>

您可以使用ajax进行尝试,并在php文件中获取数组数据,请参见下面的代码

<html><head>
<script src="jquery-1.7.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
    $('#submit_form').click(function(e){
    $("#myForm :input[value!='']").serialize();
    var form_data= $("#myForm :input[value!='']").serializeArray();
    $.post("php.php",form_data,function(data){
         alert('JavaScript done');
    },"json");      
   e.preventDefault();

   });


});
</script>
</head>


<body>
<form id="myForm">
   <input id=id1 name=name1 type="text" /><br>
   <input id=id2 name=name2 type="text" /><br>
   <input id=id3 name=name3 type="text" /><br>
   <input id=id4 name=name4 type="text" />
   <input type="submit" id="submit_form" value="submit form"/>
</form>

这似乎不会改变输出,所有的空字段都将其转换为get参数…如果我将泡沫行更改为返回$.trimthis.value.length@molotow是的,我的错误这似乎不会改变输出,所有的空字段都变成了get参数……如果我将冒泡行更改为返回$.trimthis.value.length@molotow是的,我的错误你需要AJAX表单-只调用serialize不会从请求中删除字段你需要AJAX表单-只调用serialize不会从请求中删除字段
$(document).ready(function () {
    $('#myForm').submit(function () {
        $(this).find(":input").filter(function () {
            return $.trim(this.value).length > 0
        }).serialize();
        alert('JavaScript done');
    });
});
$(document).ready(function () {
    $('#myForm').submit(function () {
        $(this).find(":input").filter(function () {
            return $.trim(this.value).length == 0
        }).remove();
        alert('JavaScript done');
    });
});
$('#myForm').on("submit",function (e) {
    e.preventDefault(); // cancel the form itself
    var opts = $(this).find(":input").filter(function () {
        return $.trim(this.value).length > 0;
    }).serialize();
    $.get($('#myForm').attr("action"),opts,function(data) {
       alert(data);
    });
});
<html><head>
<script src="jquery-1.7.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
    $('#submit_form').click(function(e){
    $("#myForm :input[value!='']").serialize();
    var form_data= $("#myForm :input[value!='']").serializeArray();
    $.post("php.php",form_data,function(data){
         alert('JavaScript done');
    },"json");      
   e.preventDefault();

   });


});
</script>
</head>


<body>
<form id="myForm">
   <input id=id1 name=name1 type="text" /><br>
   <input id=id2 name=name2 type="text" /><br>
   <input id=id3 name=name3 type="text" /><br>
   <input id=id4 name=name4 type="text" />
   <input type="submit" id="submit_form" value="submit form"/>
</form>