代码之家  ›  专栏  ›  技术社区  ›  Andy

jquery-关闭DIV外的写入错误,该DIV包含以名称为目标的输入

  •  0
  • Andy  · 技术社区  · 7 年前

    我研究过这个问题,但找不到答案。

    我有一个包含许多输入的表单。为了简单起见,我们假设只有两个称为“字段1”和“字段2”。标记如下-非常简单:

    <div class="form-group">
        <label>Field 1</label>
        <div class="input-group">
            <input type="text" name="field1" class="form-control" id="field-1">
        </div>
    </div>
    
    <div class="form-group">
        <label>Field 2</label>
        <div class="input-group">
            <input type="text" name="field2" class="form-control" id="field-2">
        </div>
    </div>
    

    我正在发出Ajax请求,如果出现错误,请使用以下jquery编写错误消息:

    var msg = '<span class="help-block">Error message string</span>';
    $('input[name="' + i + '"]').after(msg);
    $('input[name="' + i + '"]').closest('.form-group').addClass('has-error');
    

    在上面的例子中, i ,表示 name 窗体上的属性。所以如果错误是在 field1 生成的标记为:

    <div class="form-group has-error">
        <label>Field 1</label>
        <div class="input-group">
            <input type="text" name="field1" class="form-control" id="field-1">
            <span class="help-block">Error message string</span> 
        </div>
    </div>
    

    我的问题是我需要出现错误信息 之后 结束语 .input-group 而不是在里面。所以我需要这样:

    <div class="form-group has-error">
        <label>Field 1</label>
        <div class="input-group">
            <input type="text" name="field1" class="form-control" id="field-1">
        </div>
        <!-- Note: appears after closing .input-group div -->
        <span class="help-block">Error message string</span>   
    </div>
    

    我不知道如何用jquery来确定这个目标?由于存在多个输入,因此仍需要根据 名称 字段的属性(例如 字段1 ,请 field2 等等)。但他们必须在闭幕后出现 </div> 对于 .输入组 包含它的。

    这有可能吗?

    查询3.2.1

    2 回复  |  直到 7 年前
        1
  •  1
  •   Nawaz Ghori    7 年前

    更改 $('input[name="' + i + '"]').after(msg);

    $('input[name="' + i + '"]').parent().after(msg);

    你可以得到更多的细节 .parent() .目标完全取决于您编写的HTML代码

        2
  •  1
  •   pschichtel    7 年前

    您已经有了解决方案:而不是 $('input[name="' + i + '"]') 使用 $('input[name="' + i + '"]').closest('.input-group') 应用时 .after() 以下内容:

    您的代码重写:

    var msg = '<span class="help-block">Error message string</span>';
    $('input[name="' + i + '"]').closest('.form-group')
        .addClass('has-error')
        .after(msg);