【问题标题】:How to skip validation of the header while submitting a form containing table?提交包含表格的表单时如何跳过标题验证?
【发布时间】:2013-01-29 00:58:59
【问题描述】:

我有一个表格,里面有一个表格。我正在做类似的事情

function validate(){
var result = true;
$("tr").each(function(){

    if($(this).find(".qty").val()<1||isNaN($(this).find(".qty").val())){
        result = false;
        return false;
    }
    if($(this).find(".pvDetails").text()==""){
         result = false;
         return false;
    }
});

if(result)
    return true;
else
    alert('correct the input values | check your ID or Qty field');
return false;

}

但这也会将我的标头用于验证,因为我的标头定义如下 -

<tr height="50px" bgcolor="#EEE8CD">
                    <th align="left" width="10%">Serial No.</th>
                    <th align="left" width="15%">Variant ID</th>
                    <th align="left" width="20%">Product Detail</th>
                    <th align="left" width="17%">Product Image</th>
                    <th align="left" width="10%">B2B Price</th>
                    <th align="left" width="13%">Quantity</th>
                    <th align="left" width="12%">Total</th>
                </tr>

休息是我的桌身。

如何在使用与我相同的方法时跳过对表头的验证。

【问题讨论】:

    标签: javascript html forms html-table


    【解决方案1】:

    我认为你的标题的标签名称只有&lt;th&gt;,你的表格内容单元格是&lt;td&gt;,所以基本的想法是检查你的&lt;tr&gt;的孩子的标签名称

       $("tr").children().each(function () {
        if ($(this).prop("tagName") == "td") {
            if ($(this).find(".qty").val() < 1 || !isNaN($(this).find(".qty").val())) {
                result = false;
                return false;
            }
            if ($(this).find(".pvDetails").text() == "") {
                result = false;
                return false;
            }
        }
       });
    

    另一个想法就是像这样只阅读&lt;tbody&gt;部分

    $("#mytable tbody tr").children().each(function () {
    
            if ($(this).find(".qty").val() < 1 || !isNaN($(this).find(".qty").val())) {
                result = false;
                return false;
            }
            if ($(this).find(".pvDetails").text() == "") {
                result = false;
                return false;
            }
       });
    

    【讨论】:

      【解决方案2】:

      将“skipvalidation”类名添加到您不想被验证的任何行。然后把第3行修改成这样:

      $("tr").not('.skipvalidation').each(function(){ ...
      

      【讨论】:

      • 这是一种方式。另一种方法是对标题行使用thead,对表格的其余部分使用tbody,初始选择器应该是$("tr", "tbody") 或任何其他可能的选择器组合。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多