【问题标题】:Removing empty Input Elements from a form从表单中删除空的输入元素
【发布时间】:2011-06-07 17:30:16
【问题描述】:

我有一个简单的表单,它继续为 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/>

感谢您的宝贵时间

【问题讨论】:

    标签: php jquery codeigniter


    【解决方案1】:

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

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

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

    【讨论】:

    • 它删除了应该为空的元素,现在我只需要弄清楚如何处理现在正在抛出的(此处未显示)$v1 = $_post['v1']一个错误:) 谢谢!
    • if (isset($_POST['v1'])){ $v1 = $_POST['v1']; } 如果你打算这样做 9 次,那么一定要把它放在一个 for 循环中。
    • 是的,只需使用一个 3 行模板即可。我明白。再次感谢大家
    【解决方案2】:

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

    对不起,我对 Jquery 不熟悉,否则我会把代码写出来。

    【讨论】:

    【解决方案3】:
        $('#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 突出显示您可能遇到的错误并发布这些错误。

    【讨论】:

    • 我认为这应该是对问题本身的评论,而不是答案。尽管很难在评论中连贯地发布这么多代码......
    • 如果它是一个答案我没问题,他确实要求我发布更多数据,我很感激你的努力
    【解决方案4】:

    隐藏没有分配value的元素:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-23
      • 1970-01-01
      • 2013-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-27
      相关资源
      最近更新 更多