在span中迭代元素并选择某个输入字段的值

时间:2013-06-19 10:36:46

标签: jquery asp.net-mvc-3 dom each

我正在开发一个asp.net mvc3应用程序。我使用强类型剃刀视图,我有多个隐藏的输入字段来保存我需要的数据。要执行客户端验证,我需要检查是否需要文本框字段,隐藏输入中保存的数据,以及是否需要texbox值,我需要执行检查。

从逻辑上讲,我认为我需要做三个步骤

  1. 遍历某个班级的所有span元素
  2. 检查IsRequired隐藏输入字段是否设置为true
  3. 如果上述情况属实,则检查文本框的值
  4. 到目前为止一切顺利。我做了几次尝试,但它似乎比我的jQuery能力高得多,这就是为什么我在这里寻求帮助。

    这是为其中一个跨度生成的HTML。其他跨度的代码类似,只有类不同:

    <span class="checkFloat">
    Value before :
    <br>
    
    <input class="text-box single-line" type="text" value="" name="[29].FieldValue">
    
    <input type="hidden" value="118" name="[29].Id" data-val-required="The Id field is required." data-val-number="The field Id must be a number." data-val="true">
    
    <input type="hidden" value="RowId_6" name="[29].DocRowId" data-val-required="The DocRowId field is required." data-val-length-max="40" data-val-length="The field DocRowId must be a string with a maximum length of 40." data-val="true">
    
    <input type="hidden" value="True" name="[29].IsRequired" data-val-required="The IsRequired field is required." data-val="true">
    
    <input type="hidden" value="3" name="[29].ColumnNo" data-val-required="The ColumnNo field is required." data-val-number="The field ColumnNo must be a number." data-val="true">
    
    <input type="hidden" value="6" name="[29].RowNo" data-val-required="The RowNo field is required." data-val-number="The field RowNo must be a number." data-val="true">
    
    </span>
    

    所以我需要的是迭代这样的所有span元素 -

    每个范围

    <span class="checkFloat">我需要检查输入中的值 - <input type="hidden" value="True" name="[29].IsRequired" data-val-required="The IsRequired field is required." data-val="true">

    如果值为true,就像在这种情况下我需要检查 -

    的值
    <input class="text-box single-line" type="text" value="" name="[29].FieldValue">
    

    我自己做了很多尝试,但我认为自己并没有接近,但因为我知道当人们看到一个人已经为他所要求的问题付出了一些努力时会好得多,这是我尝试获取文本框值的最后一次尝试:

    $(".checkULong input[type='hidden'][value='True'][name$='IsRequired']").each(function () {
                alert($(this).val());
                if (!mathFunctions.isInt($(this).val())) {
                    $(this).focus();
                    throw "The filed can not be empty!";
                }
    });
    

1 个答案:

答案 0 :(得分:1)

似乎你以某种方式使用jQuery不引人注意的验证,但此时,你正在为验证工作做一个变通方法。我认为,一个好主意是使用 this topic 中描述的条件验证(虽然可能有点过时)。基本上,您使用特殊的“RequiredIf”属性来装饰模型。然后,编写一个javascript验证适配器,为客户端准备验证规则。 (其中一个必要步骤可能是实施IClientValidatable)。我知道这远不是你案件的解决方案,但它可能会指出你正确的方向。