从表单中删除空输入元素

时间:2011-06-07 17:30:17

标签: php jquery codeigniter

我有一个简单的表单,可以为codeigniter创建所有表单和验证要求。我想要做的是在序列化之前过滤掉任何空输入,这样我就不会创建表单输入和表单验证集规则。我不知道如何解决这个问题。我在Jquery中有警报的地方是我要删除任何空输入的地方(再次在序列化之前)。 此时我正在使用的不检测空表单字段。没有检测代码,整个系统工作正常。这是我正在使用的

    <h1>Field Name</h1>
    <form action="Form.php" onsubmit="return false;" id="form" method="post">
    <input type="text" name="v1" id="v1" /> 
    <input type="text" name="v2" id="v2" /> 
    <input type="text" name="v3" id="v3" /> 
    <input type="text" name="v4" id="v4" /> 
    <input type="text" name="v5" id="v5" /> 
    <input type="text" name="v6" id="v6" /> 

<input type="submit" name="send" id="send" value="Send" />
        </form>
<hr />
<script>
$(function(){
$('#send').click(function(){ 
---------------------------------------   
    $(":input").each(function() {
    if($(this).val() === "")
    alert("Empty Fields!!"); //using alert just to see if empty fields are detected.
    return false;
});
-----------------------------------------
var data = $('#form').serialize();
    $.ajax({
        type: "POST",
        data: data,
        url: "Form.php",
        success: function(msg){
             if(msg){
                $('#display').html(msg).show();
             }else{
                $('#display').text("<p>nothing came back</p>");
             }
        }       
    });
return false;    
});
});

我只是想避免打印出空的表单字段

<p>
<label for=""></label> <br />
<input type="text" name="" id="" /> <br />
<label class="error" id=""> This field is required</label> <br />
<p/>

感谢您的时间

4 个答案:

答案 0 :(得分:2)

这将删除所有长度为0的文本字段:

$('#send').click(function(){ 
$(':input[type="text"]').filter(function(e){
    if (this.value.length===0){
      return true;
    }  
}).remove();
    });

示例:http://jsfiddle.net/niklasvh/ZBSyX/

答案 1 :(得分:1)

您应该使用\ s作为搜索查询使用正则表达式。所以/ ^(\ s)* $ /作为正则表达式,只是确保输入与此匹配。

很抱歉,但我不熟悉Jquery,或者我会完全编写代码。

答案 2 :(得分:1)

    $('#send').click(function(){ 
//---------------------------------------   
    $(":input").each(function() {
    if($(this).val() === "")
    alert("Empty Fields!!"); //using alert just to see if empty fields are detected.
    return false;
});

你没有收到错误吗?第一个lambda的范围没有关闭。

使用Firebug突出显示您可能会收到的错误并将其发布。

答案 3 :(得分:1)

隐藏未指定value的元素:

$('input:text[value=""]').hide();

但是,当然,如果html中提供了value="x"属性,则会导致元素显示。