如何检测用于创建 slug 的输入语言,如果不是英语,那么 slug 输入使用 javascript 保持为空

Posted

技术标签:

【中文标题】如何检测用于创建 slug 的输入语言,如果不是英语,那么 slug 输入使用 javascript 保持为空【英文标题】:how to detect input language for creating slug, if not English then slug input remain empty using javascript 【发布时间】:2020-09-07 22:52:59 【问题描述】:

我正在尝试获取标题输入并使用它创建 slug。但是如果标题不是用英文写的,比如“আমার প্রথম পোস্ট”,那么 slug 输入将保持为空。代码如下。希望有人能提供帮助。不擅长javascript

document.getElementById("title").addEventListener("keyup", function() 
  if (/^[a-zA-Z]+$/.test(this.value)) 
    $(document).on('blur', '#title', function()
        var TitleInput = $('#title').val().toLowerCase().trim();
        TitleInput = TitleInput.replace(/[^a-z0-9-]+/g, '-');
        var SlugInput = $('#slug').val(TitleInput);
    );
   else 
    document.getElementById("show_lang_in_here").innerhtml = "Different language";
  
);
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

</head>
<body>
    <center>
        <h1>Form</h1>
        <form action="" method="post">
            <p>Title :</p>
            <input id="title" type="text"> <br>
            <br>
            <p>Slug :</p>
            <input id="slug" type="text">
        </form>

        <div id="show_lang_in_here"></div>

    </center>

</body>

</html>

【问题讨论】:

我不清楚你想要实现什么。是否支持其他语言的特殊字符? 得到了答案。请参阅已接受的答案。感谢您的回复。 【参考方案1】:

我已经修改了你的代码来做我相信你所追求的,这些是主要的变化:

等待文档加载$(document).ready() 我已经扩展了您的正则表达式以允许数字和空格作为有效的英语/^[a-zA-Z0-9 ]+$/(您可以添加更多内容,很难准确检测出什么是有效的英语) 您在if 中创建了一个事件侦听器,而不是实际执行代码(您可以通过将多个事件包含在.on('keyup blur') 字符串中来侦听多个事件)

$(document).ready(function() 
  $('#title').on('keyup blur', function() 
    if (/^[a-zA-Z0-9 ]+$/.test($(this).val())) 
      var titleInput = $(this).val().toLowerCase().trim().replace(/[^a-z0-9-]+/g, '-');
      $('#slug').val(titleInput);
     else 
      $('#show_lang_in_here').text('Different language');
    
  );
)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

<center>
  <h1>Form</h1>
  <form action="" method="post">
    <p>Title :</p>
    <input id="title" type="text"> <br>
    <br>
    <p>Slug :</p>
    <input id="slug" type="text">
  </form>
  <div id="show_lang_in_here"></div>
</center>

【讨论】:

【参考方案2】:

你正在做的是替换为-

如果要删除所有内容,请将其更改为TitleInput = TitleInput.replace(/[^a-z0-9-]+/g, '');

document.getElementById("title").addEventListener("keyup", function() 
  if (/^[a-zA-Z]+$/.test(this.value)) 
    $(document).on('blur', '#title', function()
        var TitleInput = $('#title').val().toLowerCase().trim();
        TitleInput = TitleInput.replace(/[^a-z0-9-]+/g, '');
        var SlugInput = $('#slug').val(TitleInput);
    );
   else 
    document.getElementById("show_lang_in_here").innerHTML = "Different language";
  
);
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

</head>
<body>
    <center>
        <h1>Form</h1>
        <form action="" method="post">
            <p>Title :</p>
            <input id="title" type="text"> <br>
            <br>
            <p>Slug :</p>
            <input id="slug" type="text">
        </form>

        <div id="show_lang_in_here"></div>

    </center>

</body>

</html>

【讨论】:

不完全是我想要的。但感谢他的努力。 :)

以上是关于如何检测用于创建 slug 的输入语言,如果不是英语,那么 slug 输入使用 javascript 保持为空的主要内容,如果未能解决你的问题,请参考以下文章

如何根据语言重写自定义帖子类型 slug?

用于生成 slug 的 T-SQL 函数?

wordpress:如何检查 slug 是不是包含特定单词?

C语言 如何在一段时间内检测键盘是不是按下

如何检测我所在的类别页面的 slug? (WooCommerce)

Slug 字段不适用于 django 中的孟加拉语。如何在孟加拉语中使用蛞蝓