【问题标题】:How can I check if a string equals an array entry in Javascript?如何检查字符串是否等于 Javascript 中的数组条目?
【发布时间】:2021-07-25 09:50:45
【问题描述】:

我正在尝试验证输入的游戏标题是否存在于数组中,来自 ajax 的响应将所有游戏标题带入数据库。

因此,如果用户键入一个存在的游戏,则应该显示一条消息。

这是我尝试过的:

<script type='text/javascript'>
function gameTitleValidation(str) {
    $.ajax({
        type: 'GET',
        url: '/getAjaxData',
        success: function (data) {
            if ($.inArray(str, $.each(data.game_titles))){
                alert("Game exists");
            }
        }
    });
}

还有 HTML:

<div class="form-group form-group-game">
   <label>Game title:</label><br>
   <input type="text" name="game_title" onkeyup="gameTitleValidation(this.value)"required>
</div>

它从来没有进入条件,我做错了什么?

提前致谢。

【问题讨论】:

  • 你不应该在那里打电话给$.each。你应该只传递数组。 each 用于为每个数组元素调用回调。
  • @trincot 如果我这样做,每次我按键时都会显示警报
  • 首先data.game_titles是一个json字符串,你需要解析它..JSON.parse(data.game_titles),现在你有一个数组来比较
  • 即使这个比较必须在后端并且返回真或假给你的前端
  • @PsyLogic 你好,我已经按照指示完成了,但是它返回一个错误:backend-games:128 Uncaught ReferenceError: gameTitleValidation is not defined at HTMLInputElement.onkeyup (backend-games:128),你的关于后端验证的建议是通过帖子发送输入数据并在那里验证它的真假?

标签: javascript html arrays ajax laravel


【解决方案1】:

看起来你在这里没有什么选择。

  1. 如果知道后端返回的是一个数组:
  • data.game_titles.some(title =&gt; title === str)
  • $.inArray(str, data.game_titles) &gt;= 0 作为 $.inArray 中的第二个参数应该是数组本身
  1. 如果 backed 返回的是一个字符串(例如逗号分隔值):
  • data.game_titles.indexOf(str) &gt;= 0

【讨论】:

    猜你喜欢
    • 2022-01-04
    • 2023-03-11
    • 1970-01-01
    • 2016-12-21
    • 1970-01-01
    • 2014-07-29
    • 1970-01-01
    • 2011-02-05
    • 1970-01-01
    相关资源
    最近更新 更多