在div

时间:2016-09-12 15:55:39

标签: javascript jquery html

我想找到距离班级span最近的error_span。我怎么能用jQuery做到这一点?

<div class="form-group row">
    <div class="col-sm-4">
        <label for="reimburse_price" class="control label">Amount</label>
    </div>
    <div class="col-sm-8">
        <div>
            <input type="text" name="reimburse_price" min="1" placeholder='0.00' class="form-control numberOnly" id="reimburse_price" required>        
        </div>
        <div>
            <span class="small text-danger error_span"></span>    
        </div>
    </div>
</div>

我的javascript在这里

$("#reimburse_price").blur(function(){
  checkNumInput("#reimburse_price");
});

我的jquery功能在这里

function checkNumInput(id){
    if ($(id).val() == "") {
        $(id)[0].setCustomValidity('Please fill out this field');
        $(id).closest("span .error_span").text("Please fill out this field").removeClass("hidden").addClass("text-danger");
    }
}

1 个答案:

答案 0 :(得分:4)

您当前代码的问题是,closest()会查看父元素,但您要查找的span是父母对input的兄弟姐妹的孩子。

要解决您的问题,请转到inputspan的公共父级,并从那里使用find()。试试这个:

$("#reimburse_price").blur(function() {
    checkNumInput('#' + this.id);
});

function checkNumInput(id) {
    var $input = $(id);
    if ($input.val() == "") {
        $input.get(0).setCustomValidity('Please fill out this field');
        $input.closest('.form-group').find('.error_span').text("Please fill out this field").toggleClass("hidden text-danger");
    }
}