簡體   English   中英

select 中最接近的匹配項

[英]Closest match in a select

我有一個包含不同標題的select元素; 舉個例子:

<select name="titles">
  <option value="1">Mr.</option>
  <option value="2">Mrs.</option>
  <option value="3">Ms.</option>
  <option value="4">Dr.</option>
  [..]
</select>

然后我有一個包含用戶提交的標題的字符串(最初寫在一個自由格式的文本框中)。 我的任務是選擇select中與該標題對應的option

然而,我發現用戶有時是愚蠢的。

我搜索的用戶提供的字符串可能是“dr”。 或“博士”或類似的東西。 我需要將它與最相關的匹配(即“Dr.”而不是“Mr.”,兩者都接近於說“dr.”)。

我怎么會go這個呢? 我只用 MySQL 的LIKE和 PHP 的levenshtein()做過近似匹配,據我所知,這兩者都與 JS 無關。

jQuery 1.7.1 可用。 IE6 兼容性與我無關。

先感謝您!

如果我沒記錯的話,唯一合理(和可接受的)變化是開頭的大寫字母/沒有大寫字母和末尾的缺失點字符。

如果是這種情況,那么您只需將用戶字符串與select中的每個項目進行比較,並牢記上述內容:

  • 將用戶輸入的第一個字符轉換為大寫。
  • 添加一個. 如果用戶字符串不以 . 結尾,則到字符串的末尾. .
  • 將修改后的用戶字符串與select中的每個元素進行比較,看看是否匹配。

用戶永遠不會傻;)

在你進行匹配之前,我首先會在我的 javascript 中將我的所有字母轉換為小寫字母,然后我會尋找點 (.) 並可能將它們刪除或將它們添加到你的匹配字符串(你的選擇)。

希望有所幫助。

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
   "http://www.w3.org/TR/html4/strict.dtd">

<html lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <script type="text/javascript" charset="utf-8" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
    <!-- Date: 2012-04-05 -->
    <script type="text/javascript" charset="utf-8">
    $(document).ready(function() {
        var title = "dr"
        $("#titles option").each(function(i, el) {
            var re = new RegExp(title, 'ig')
            if ($(el).html().match(re)) {
                $(el).attr("selected", "selected");
            }
        });
    })
    </script>
</head>
<body>
    <select name="titles" id="titles">
      <option value="1">Mr.</option>
      <option value="2">Mrs.</option>
      <option value="3">Ms.</option>
      <option value="4">Dr.</option>
    </select>
</body>
</html>

另一個解決您問題的方法 - 為您的用戶提供准確的表格,這樣他們就沒有機會輸入任何錯誤的數據。

您會考慮剝離將自由格式字符串與列表項匹配的額外層嗎? 也許有一個自動完成字段/下拉列表或類似的; 讓用戶輸入並重新選擇相同的數據兩次似乎太過分了。

我本來打算建議研究一種模糊搜索算法,但是擁有一組與特定標題匹配的值不是更簡單嗎? 它可以與規范化的句點、大寫和空格進行比較,即

  • 用戶輸入的Dr , dr. 並且Dr.將被歸一化並與Dr.匹配。
  • 用戶輸入的doctorDoctor將被標准化和匹配
  • 用戶輸入的docDoc. 並且doc將被規范化和匹配等。

這聽起來像是一項令人麻木的任務,盡管要經歷各種各樣的先生等等。真正考慮首先將其納入規范化的下拉列表; 唯一比這更難處理的是非規范化地址字段:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM