javascript "if else" 不满足条件时不会进入else

javascript "if else" wont go in else when condition is not met

我在 html

中有一个输入文本和一个空标签
<div class="form-group">
    <label for="hsDetailsForm-name">Denumire</label>
    <input id="hsDetailsForm-name" type="text" class="form-control" ng-model="hydroStation.name" placeholder="Obligatoriu" required ng-blur="validationObliga()" autofocus/>
    <label id="obliga"></label>
</div>

这里是js中的函数

$scope.validationObliga = function () {
    var value = $.trim($("hsDetailsForm-name").val());

    if (value == "") {
        $('#obliga').html("Campul este obligatoriuu!").css("color", "red");
    } else {
        $('#obliga').html("");
    }
}

ng-blur 有效,当它为空时它会用红色写入 "Campul este obligatoriuu!",但是当您在文本字段中键入内容并将焦点移出它时,它仍然会说,它不会将标签更改为“”。为什么不放在 else 中?

你错过了这里的主播;应该是...

var value = $.trim($("#hsDetailsForm-name").val());

... 这样您就可以查找 id 等于 hsDetailsForm-name 的元素。就目前而言,您寻找 一个元素 hsDetailsForm-name - 并且有 none。结果,jQuery 元素为空,其 val() 为 undefined,而 $.trim(undefined) 产生空字符串。

此处的错误是您遗漏了 ID 选择器的 #

虽然在选择器中添加#可以解决你的问题,但我不建议你在这里使用jQuery,使用AngularJS如下

控制器:

$scope.validationObliga = function () {
    var value = $scope.hydroStation.name.trim();

    $scope.showMessage = value === "";
};

查看:

<div class="form-group">
    <label for="hsDetailsForm-name">Denumire</label>
    <input type="text" class="form-control" ng-model="hydroStation.name" placeholder="Obligatoriu" required ng-blur="validationObliga()" autofocus/>
    <label ng-show="showMessage" class="error">Campul este obligatoriuu!</label>
    <!--   ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^                     Add this --->
</div>

CSS:

.error {
    color: red;
}