【问题标题】:How to check if all textboxes (including dynamically added) are empty or not?如何检查所有文本框(包括动态添加的)是否为空?
【发布时间】:2013-12-17 19:21:42
【问题描述】:

在我的表单中,onsubmit 要求来自三个不同函数的返回值。一个函数应该检查具有某个类的文本框是否为空。在我的表单中,我可以添加与已经存在的文本框具有相同类的文本框。当我添加这样一个文本框时,该功能似乎只检查最后添加的文本框,因为当我提交表单时,即使第一个文本框为空,它也会提交。

当我不添加任何文本框时,第一个被选中...所以问题只有在我添加文本框时才会出现。

如果有人可以帮助我,我将不胜感激!提前致谢!

这是我的代码:

            function legedienst()
            {
                var omschrijvingen = document.getElementsByClassName('omschrijving');
                var valid = true;

                for (var i=0; i < omschrijvingen.length; i++)
                {
                    if (omschrijvingen[i].value == '')
                    {
                        document.getElementById('error').innerHTML = 'Vul alle diensten in a.u.b.';
                        valid = false;
                    }
                }

                return valid;
            }

这里是创建和删除动态文本框的代码。 "bereken()" 只是一个被调用来计算一些值的函数。

        // dienst toevoegen
            var linenumber = 0;
            addLine = function()
            {
                linenumber++;
                $('#dienst').append('<tr><td><input name="dienstomschrijving[]" type="text" style="width: 200px;" class="omschrijving" /></td><td><input name="prijs" class="prijs" type="text" style="width: 100px;" /></td><td><input name="verwijder_dienst" type="button" value="Verwijder dienst" onclick="delLine(this)" /></td></tr>');
                bereken();
            }

        // dienst verwijderen
            delLine = function(line)
            {
                $(this).closest('tr').remove();
            };

【问题讨论】:

  • 获取 nodeList 是实时的,并且应该包含添加的元素,所以我看不出提交时会有什么问题?一定是发生了其他事情。
  • prototype.js 是不是到处乱跑? getElementsByClassName
  • 你能分享创建动态文本框的代码吗?

标签: javascript textbox dynamically-generated


【解决方案1】:

我看到你正在使用 jQuery。试试这个方法。

function legedienst() {
  $('tr td. omschrijving').each(function(){
    if($(this).val().length==0){
      return false;
    }
  });
  return true;
}

【讨论】:

    【解决方案2】:

    您的函数 legedienst,用于验证具有 class='omchrijving' 的文本框是正确的。在delLine函数中把“this”改成“line”,也可以。

    $(line).closest('tr').remove();
    

    我看不出你那边有什么问题。你可以玩一个工作演示:http://jsfiddle.net/FkGb7/

    【讨论】:

    • 我检查了你的演示中的所有内容,但我无法让它工作......我更改了 delLine 函数。我不知道出了什么问题,而且我对 javascript 没有太多经验
    猜你喜欢
    • 1970-01-01
    • 2014-06-05
    • 2021-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    • 2011-10-15
    • 1970-01-01
    相关资源
    最近更新 更多