javascript - 输入长度大于 0 不能正常工作

标签 javascript jquery html css

我正在尝试编写一些代码,如果输入为空,输入颜色将变为红色。用户输入内容后,红色将被移除。

HTML

<html>
<head>
    <!-- add main style -->
    <link rel="stylesheet" href="../css/style.css">
    <!-- add JQuery -->
    <script
        src="https://code.jquery.com/jquery-3.3.1.js"
        integrity="sha256-2Kok7MbOyxpgUVvAk/HJ2jigOSYS2auK4Pfzbm7uH60="
        crossorigin="anonymous"></script>
</head>
<body>
<div class="financeContainer">
    <div class="searchBox">
        <input id="financeSearch" type="text" class="financeInput" placeholder="Enter The Code">
        <button id="financeBtn" class="financeSearchBt"><i class="fas fa-search financeSearchIcon"></i></button>
    </div>
</div>
<script>

</script>
</body>
</html>

CSS

.redColor{
    color: red;
}

jQuery

$(document).ready(function () {
    $("#financeSearch").keydown(function () {
        if ($("#financeSearch").val().length>0){
            $("#financeSearch").removeClass("redColor")
        }
    });
    $(document).bind('keypress', function(e) {
        if(e.keyCode==13){
            $('#financeBtn').trigger('click');
        }
    });
    $("#financeBtn").click(function () {
        var financeKey = $("#financeSearch").val();
        if (financeKey == ""){
            $("#financeSearch").addClass("redColor")
        }
});

当按钮被提交时,输入得到类 redColor。我希望如果用户输入红色会被移除。但在输入 2 个字符后,它就完成了。我希望在输入第一个字符后完成。

最佳答案

当调用 keydown 时,最后输入的字符尚未添加到输入值中。所以这就是为什么你需要输入两个字符来去除红色。

你应该使用 keyup 而不是 keydown

您不需要在事件处理程序中选择 $("#financeSearch"),只需使用 $(this)

并且也不需要比较大于0length。您可以直接输入 $(this).val().length 因为数字中除 0 之外的所有值都是真实的。

$(document).ready(function() {
  $("#financeSearch").keyup(function() {
    if ($(this).val().length) {
      $(this).removeClass("redColor")
    }
  });
  $(document).bind('keypress', function(e) {
    if (e.keyCode == 13) {
      $('#financeBtn').trigger('click');
    }
  });
  $("#financeBtn").click(function() {
    var financeKey = $("#financeSearch").val();
    if (financeKey == "") {
      $("#financeSearch").addClass("redColor")
    }
  });
});
.redColor {
  color: red;
}
<!-- add JQuery -->
<script src="https://code.jquery.com/jquery-3.3.1.js" integrity="sha256-2Kok7MbOyxpgUVvAk/HJ2jigOSYS2auK4Pfzbm7uH60=" crossorigin="anonymous"></script>
<div class="financeContainer">
  <div class="searchBox">
    <input id="financeSearch" type="text" class="financeInput" placeholder="Enter The Code">
    <button id="financeBtn" class="financeSearchBt"><i class="fas fa-search financeSearchIcon"></i></button>
  </div>
</div>

关于javascript - 输入长度大于 0 不能正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55946888/

相关文章:

javascript - angular-chart.js legendCallback

javascript - Parse.com 在云功能上设置 ACL

jQuery 可排序连接多个列表

node.js - Websocket apache 代理问题与 ssl

javascript - 无法清除基于 Jquery Mobile 的应用程序中的 Dom

javascript - jquery 选择的选择验证消息在表单提交之前不会消失

javascript - 如何将 mongoose ObjectId 数组转换为字符串数组?

jquery - asp.net mvc 所见即所得编辑器/数据库图像上传/预览

jquery - 不能按 ID 选择对象,只能用 jQuery 按类选择对象?

java - 片段内的 Wicket 口面板