首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于"alt“标签的图像过滤

基于"alt“标签的图像过滤
EN

Stack Overflow用户
提问于 2018-05-02 20:02:15
回答 3查看 454关注 0票数 1

我需要根据"alt“属性中包含的文本,只显示包含输入字段中的文本的图像。

我需要一些过滤器的特殊字符和大小写不敏感的打字文本,也。例如,在键入“CORA o”一词时,必须在结果中显示带有"coracao“的图像,并忽略这一情况(”CORAÇ“必须返回带有"coracao”的图像,或“例”必须返回“示例”示例)。记住,alt属性不包含任何特殊字符。

我的代码是(我不知道javascript,只是在互联网上找到的)

代码语言:javascript
复制
    $("#myinput").keyup(function() {
    var val = $.trim(this.value);
    if (val === "")
        $('img').show();
    else {
        $('img').hide();
        $('img[alt*=' + val + "]").show();
    }
});

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-05-02 20:36:00

这似乎是你想做的事。请注意,这将只适用于ES6 ONLY (这意味着更新的浏览器--可能不亚于Internet 11)。使用String.Prototype.Normalize()删除特殊字符,如应答所建议的那样。

代码语言:javascript
复制
$('#myinput').keyup(function() {
  let val = $.trim(this.value);
  val = val.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
  if (val === '') {
    $('img').show();
  } else {
    $('img').hide();
    $('img').each((i, img) => {
      let imgAlt = img.alt.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
      if((imgAlt.toLowerCase()).indexOf(val.toLowerCase()) > -1) {
        $(img).show();
      }
    });
  }
});
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="myinput">
<img alt="CORAÇÃO">
<img alt="CORACAO">
<img alt="foo">
<img alt="bar">
<img alt="baz">

票数 0
EN

Stack Overflow用户

发布于 2018-05-02 20:29:02

这是您在小提琴中的工作代码,我很快就会给您发送特殊字符的筛选器!

代码语言:javascript
复制
<img src="http://via.placeholder.com/160x80" alt="16">
<img src="http://via.placeholder.com/150x80" alt="15">
<img src="http://via.placeholder.com/140x80" alt="14">
<img src="http://via.placeholder.com/130x80" alt="13">

<input type="text" id="filter">

$("#filter").keyup(function() {
  var val = $.trim(this.value);
  if (val === "")
    $('img').show();
  else {
    $('img').hide();
    $('img[alt*=' + val + "]").show();
  }
});

更新:带有特殊字符的新小提琴

票数 1
EN

Stack Overflow用户

发布于 2018-05-02 20:33:28

所以你想要的是删除特殊的字符,但保留相关的字母。

您可以使用字符串规格化方法,然后删除不需要的字符:

代码语言:javascript
复制
function removeDiacritics(str) {
    return str && str.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
}

removeDiacritics('Coração'); // Coracao

更新

要使它在代码中工作,请执行以下操作:

代码语言:javascript
复制
$(function() {
    function removeDiacritics(str) {
        return str && str.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
    }

    function normalize(str) {
        return (removeDiacritics(str) || '').trim().toLowerCase();
    }

    $("#myinput").keyup(function() {
        var val = normalize(this.value);

        if (val === "")
            $('img').show();
        else {
            $('img').hide();
            // assuming the alt is already normalized
            $('img[alt*=' + val + "]").show();
        }
    });
});
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<!-- You can enter words with special characters in the input, like CORAÇÃO -->
<input id="myinput">

<img alt="coracao">
<img alt="construcao">
<img alt="automovel">
<img alt="estacao">

您可以在上面的片段中看到html和js代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50142654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档