天道酬勤,学无止境

如何在自动完成中获取所选项目的价值(how to get value of selected item in autocomplete)

问题

我在这里有一个来自http://jqueryui.com/autocomplete/的代码,它的确很好,但是我找不到在文本视图中获取所选项目的值的方法,我尝试了类似的方法,但是它不起作用

<script>
$(document).ready(function () {
    $('#tags').change(function () {
        $('#tagsname').html('You selected: ' + this.value);
    }).change();
});
</script>

<!doctype html>

<html lang="en">
<head>
  <meta charset="utf-8" />
  <title>jQuery UI Autocomplete - Default functionality</title>
  <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" />
  <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
  <script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
  <link rel="stylesheet" href="/resources/demos/style.css" />
  <script>
  $(function() {
    var availableTags = [
      "ActionScript",
      "AppleScript",
      "Asp",
      "BASIC",
      "C",
      "C++",
      "Clojure",
      "COBOL",
      "ColdFusion",
      "Erlang",
      "Fortran",
      "Groovy",
      "Haskell",
      "Java",
      "JavaScript",
      "Lisp",
      "Perl",
      "PHP",
      "Python",
      "Ruby",
      "Scala",
      "Scheme"
    ];
    $( "#tags" ).autocomplete({
      source: availableTags
    });
  });
  </script>
<script>
$(document).ready(function () {
    $('#tags').change(function () {
        $('#tagsname').html('You selected: ' + this.value);
    }).change();
});
</script>
</head>
<body>

<div class="ui-widget">
  <label for="tags">Tags: </label>
  <input id="tags" />
  <div id="tagsname"></div>
</div>


</body>
</html>
回答1

自动完成更改值时,它将触发自动完成更改事件,而不是更改事件

$(document).ready(function () {
    $('#tags').on('autocompletechange change', function () {
        $('#tagsname').html('You selected: ' + this.value);
    }).change();
});

演示:小提琴

另一种解决方案是使用select事件,因为仅当输入模糊时才触发change事件。

$(document).ready(function () {
    $('#tags').on('change', function () {
        $('#tagsname').html('You selected: ' + this.value);
    }).change();
    $('#tags').on('autocompleteselect', function (e, ui) {
        $('#tagsname').html('You selected: ' + ui.item.value);
    });
});

演示:小提琴

回答2

要更普遍地回答这个问题,答案是:

select: function( event , ui ) {
    alert( "You selected: " + ui.item.label );
}

完整的例子:

 $('#test').each(function(i, el) { var that = $(el); that.autocomplete({ source: ['apple','banana','orange'], select: function( event , ui ) { alert( "You selected: " + ui.item.label ); } }); });
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/themes/smoothness/jquery-ui.css" /> <script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/jquery-ui.min.js"></script> Type a fruit here: <input type="text" id="test" />
回答3
$(document).ready(function () {
    $('#tags').on('change', function () {
        $('#tagsname').html('You selected: ' + this.value);
    }).change();
    $('#tags').on('blur', function (e, ui) {
        $('#tagsname').html('You selected: ' + ui.item.value);
    });
});
回答4

我想要的东西非常接近-用户选择一个项目的那一刻,即使只是按箭头键(焦点),我也希望该数据项附加到有问题的标签上。 当他们再次输入而没有选择其他项目时,我希望清除该数据。

(function() {
    var lastText = '';

    $('#MyTextBox'), {
        source: MyData
    })
    .on('autocompleteselect autocompletefocus', function(ev, ui) {
        lastText = ui.item.label;
        jqTag.data('autocomplete-item', ui.item);
    })
    .keyup(function(ev) {
        if (lastText != jqTag.val()) {
            // Clear when they stop typing
            jqTag.data('autocomplete-item', null);

            // Pass the event on as autocompleteclear so callers can listen for select/clear
            var clearEv = $.extend({}, ev, { type: 'autocompleteclear' });
            return jqTag.trigger(clearEv);
    });
})();

使用此功能后,“ autocompleteselect”和“ autocompletefocus”仍会在您期望的时候触发,但结果是所选的完整数据项始终在标签上始终可用。 现在,通常通过键入其他内容来清除该选择时,会触发“ autocompleteclear”。

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 使用JavaScript在下拉列表中获取选定的值(Get selected value in dropdown list using JavaScript)
    问题 如何使用JavaScript从下拉列表中获取选定的值? 我尝试了下面的方法,但是它们都返回选择的索引而不是值: var as = document.form1.ddlViewBy.value; var e = document.getElementById("ddlViewBy"); var strUser = e.options[e.selectedIndex].value; 回答1 如果您具有如下所示的select元素: <select id="ddlViewBy"> <option value="1">test1</option> <option value="2" selected="selected">test2</option> <option value="3">test3</option> </select> 运行此代码: var e = document.getElementById("ddlViewBy"); var strUser = e.value; 将strUser设为2 。 如果您真正想要的是test2 ,请执行以下操作: var e = document.getElementById("ddlViewBy"); var strUser = e.options[e.selectedIndex].text; 这将使strUser成为test2 回答2
  • 如何使用jQuery获取select的所有选项?(How to get all options of a select using jQuery?)
    问题 如何通过传递ID来通过jQuery获得select的所有选项? 我只希望获得其价值,而不是文字。 回答1 采用: $("#id option").each(function() { // Add $(this).val() to your list }); .each()| jQuery API文档 回答2 我不了解jQuery,但我确实知道,如果您获得select元素,它将包含一个“ options”对象。 var myOpts = document.getElementById('yourselect').options; alert(myOpts[0].value) //=> Value of the first option 回答3 $.map可能是最有效的方法。 var options = $('#selectBox option'); var values = $.map(options ,function(option) { return option.value; }); 如果只希望选择那些更改选项,则可以将其添加到$('#selectBox option:selected')中。 第一行选择所有复选框,并将其jQuery元素放入变量中。 然后,我们使用jQuery的.map函数将函数应用于该变量的每个元素; 我们要做的就是返回每个元素的值
  • jQuery从下拉列表中获取选定的选项(jQuery Get Selected Option From Dropdown)
    问题 通常,我使用$("#id").val()返回所选选项的值,但是这次不起作用。 所选标签的ID为aioConceptName HTML代码 <label>Name</label> <input type="text" name="name" /> <select id="aioConceptName"> <option>choose io</option> <option>roma</option> <option>totti</option> </select> 回答1 对于下拉选项,您可能想要这样的东西: var conceptName = $('#aioConceptName').find(":selected").text(); val()不能解决问题的原因是,单击选项不会更改下拉菜单的值,它只是将:selected属性添加到作为下拉菜单的子项的selected选项中。 回答2 设置每个选项的值 <select id="aioConceptName"> <option value="0">choose io</option> <option value="1">roma</option> <option value="2">totti</option> </select> $('#aioConceptName').val()无效,因为.val()返回value属性。
  • 以字符串形式获取列表框中所选项目的值(Getting value of selected item in list box as string)
    问题 我正在尝试使用下面的代码获取列表框中所选项目的值,但它始终返回空字符串。 DataSet ds = searchforPrice(Convert.ToString(listBox1.SelectedItem)); 在这里,我试图将所选项目的值作为字符串传递给方法searchforPrice,以从数据库中检索数据集。 如何将所选项目的值检索为字符串? 我正在从组合框向列表框添加项目,而组合框又从数据库加载了项目。 listBox1.Items.Add(comboBox2.Text); 任何人对此都有答案。 回答1 如果要检索项目的显示文本,请使用GetItemText方法: string text = listBox1.GetItemText(listBox1.SelectedItem); 回答2 如果您在应用程序中使用ListBox,并且想要返回ListBox的选定值并将其显示在Label或其他任何东西中,然后使用此代码,它将对您有帮助 private void listBox1_SelectedIndexChanged(object sender, EventArgs e) { label1.Text = listBox1.SelectedItem.ToString(); } 回答3 要获取à列表框中所有选定项的值,可以在DataRowView中转换选定项
  • 使用jQuery从下拉列表(选择框)中获取选定的文本(Get selected text from a drop-down list (select box) using jQuery)
    问题 如何从jQuery的下拉列表中获取选定的文本(而不是选定的值)? 回答1 $("#yourdropdownid option:selected").text(); 回答2 试试这个: $("#myselect :selected").text(); 对于ASP.NET下拉列表,可以使用以下选择器: $("[id*='MyDropDownId'] :selected") 回答3 例如,此处发布的答案, $('#yourdropdownid option:selected').text(); 不适用于我,但这确实: $('#yourdropdownid').find('option:selected').text(); 它可能是jQuery的旧版本。 回答4 如果您已经有一个变量中的下拉列表,这对我来说是有效的: $("option:selected", myVar).text() 关于这个问题的其他答案对我有帮助,但是最终jQuery论坛线程$(this +“ option:selected”)。attr(“ rel”)选项在IE中的作用最大。 更新:修复了上面的链接 回答5 这对我有用 $("#dropdownid").change(function() { alert($(this).find("option:selected").text()); })
  • 如何在Angular.js选择框中使用默认选项(How to have a default option in Angular.js select box)
    问题 我已经搜索过Google,但找不到任何东西。 我有这个代码。 <select ng-model="somethingHere" ng-options="option.value as option.name for option in options" ></select> 有了这样的数据 options = [{ name: 'Something Cool', value: 'something-cool-value' }, { name: 'Something Else', value: 'something-else-value' }]; 输出是这样的。 <select ng-model="somethingHere" ng-options="option.value as option.name for option in options" class="ng-pristine ng-valid"> <option value="?" selected="selected"></option> <option value="0">Something Cool</option> <option value="1">Something Else</option> </select> 如何将数据中的第一个选项设置为默认值,这样您将得到这样的结果。 <select ng
  • 如何防止在PHP中进行SQL注入?(How can I prevent SQL injection in PHP?)
    问题 这个问题的答案是社区的努力。 编辑现有答案以改善此职位。 它目前不接受新的答案或互动。 如果将用户输入未经修改地插入到SQL查询中,则该应用程序很容易受到SQL注入的影响,如以下示例所示: $unsafe_variable = $_POST['user_input']; mysql_query("INSERT INTO `table` (`column`) VALUES ('$unsafe_variable')"); 这是因为用户可以输入类似value'); DROP TABLE table;-- value'); DROP TABLE table;-- ,查询变为: INSERT INTO `table` (`column`) VALUES('value'); DROP TABLE table;--') 可以采取什么措施来防止这种情况的发生? 回答1 使用准备好的语句和参数化查询。 这些是独立于任何参数发送到数据库服务器并由数据库服务器解析的SQL语句。 这样,攻击者就不可能注入恶意SQL。 您基本上有两种选择可以实现此目的: 使用PDO(对于任何受支持的数据库驱动程序): $stmt = $pdo->prepare('SELECT * FROM employees WHERE name = :name'); $stmt->execute([ 'name' => $name
  • PostgreSQL序列的下一个值?(PostgreSQL next value of the sequences?)
    问题 我在我的Codeigniter网站上使用PostgreSQL。 我正在使用杂货杂货进行添加,编辑和删除操作。 在进行编辑或添加时,我想根据内容的ID动态重命名上传的文件。 我可以使用杂货杂货店的callback_after_upload函数来做到这一点。 在添加新内容时,我需要内容的下一个ID。 我尝试使用nextval()函数,但是序列随其递增。 不使用nextval()函数如何获得序列的最后一个值? 还是有一种简单的方法可以做到这一点? 回答1 RETURNING 从PostgreSQL 8.2开始,只需一次往返数据库就可以实现: INSERT INTO tbl(filename) VALUES ('my_filename') RETURNING tbl_id; tbl_id通常是序列或IDENTITY(Postgres 10或更高版本)列。 手册中的更多内容。 明确获取价值 如果filename需要包含tbl_id (冗余),则仍可以使用单个查询。 使用lastval()或更具体的currval(): INSERT INTO tbl (filename) VALUES ('my_filename' || currval('tbl_tbl_id_seq') -- or lastval() RETURNING tbl_id; 看:
  • 如何在ASP.NET C#中使用foreach获取CheckBoxList中选定项的值?(How to get values of selected items in CheckBoxList with foreach in ASP.NET C#?)
    问题 我有一个这样的CheckBoxList: <asp:CheckBoxList ID="CBLGold" runat="server" CssClass="cbl"> <asp:ListItem Value="TGJU"> TG </asp:ListItem> <asp:ListItem Value="GOLDOZ"> Gold </asp:ListItem> <asp:ListItem Value="SILVEROZ"> Silver </asp:ListItem> <asp:ListItem Value="NERKH"> NE </asp:ListItem> <asp:ListItem Value="TALA"> Tala </asp:ListItem> <asp:ListItem Value="YARAN"> Sekeh </asp:ListItem> </asp:CheckBoxList> 现在,我想使用foreach从此CheckBoxList中获取所选项目的值,并将其放入列表中。 回答1 请注意,我希望代码简短。 List<ListItem> selected = CBLGold.Items.Cast<ListItem>() .Where(li => li.Selected) .ToList(); 或使用简单的foreach : List<ListItem>
  • 我应该在MySQL中使用datetime或timestamp数据类型吗?(Should I use the datetime or timestamp data type in MySQL?)
    问题 您是否建议使用日期时间或时间戳字段,为什么(使用MySQL)? 我正在服务器端使用PHP。 回答1 MySQL中的时间戳通常用于跟踪记录的更改,并且通常在每次更改记录时进行更新。 如果要存储特定值,则应使用datetime字段。 如果您想在使用UNIX时间戳还是本机MySQL日期时间字段之间做出选择,请采用本机格式。 您可以通过这种方式在MySQL中进行计算("SELECT DATE_ADD(my_datetime, INTERVAL 1 DAY)")并且在查询记录时,可以很容易地将值的格式更改为UNIX时间戳("SELECT UNIX_TIMESTAMP(my_datetime)") 。如果您想使用PHP对其进行操作。 回答2 在MySQL 5及更高版本中, TIMESTAMP值从当前时区转换为UTC以进行存储,并从UTC转换回当前时区以进行检索。 (这仅适用于TIMESTAMP数据类型,不适用于其他类型,例如DATETIME。) 默认情况下,每个连接的当前时区是服务器的时间。 可以在每个连接的基础上设置时区,如MySQL服务器时区支持中所述。 回答3 我总是将DATETIME字段用于行元数据(创建或修改的日期)以外的任何内容。 如MySQL文档中所述: 当您需要同时包含日期和时间信息的值时,将使用DATETIME类型。 MySQL检索并以'YYYY-MM-DD HH:MM
  • 如何获取RxJS Subject或Observable的当前值?(How to get current value of RxJS Subject or Observable?)
    问题 我有一个Angular 2服务: import {Storage} from './storage'; import {Injectable} from 'angular2/core'; import {Subject} from 'rxjs/Subject'; @Injectable() export class SessionStorage extends Storage { private _isLoggedInSource = new Subject<boolean>(); isLoggedIn = this._isLoggedInSource.asObservable(); constructor() { super('session'); } setIsLoggedIn(value: boolean) { this.setItem('_isLoggedIn', value, () => { this._isLoggedInSource.next(value); }); } } 一切都很好。 但是我还有另一个不需要订阅的组件,它只需要在某个时间点获取isLoggedIn的当前值即可。 我怎样才能做到这一点? 回答1 Subject或Observable没有当前值。 发出值时,将其传递给订户,并使用它完成Observable 。 如果要使用当前值
  • SQL使用SELECT * [columnA除外] FROM tableA排除一列?(SQL exclude a column using SELECT * [except columnA] FROM tableA?)
    问题 我们都知道要从表中选择所有列,我们可以使用 SELECT * FROM tableA 有没有一种方法可以在不指定所有列的情况下从表中排除列? SELECT * [except columnA] FROM tableA 我知道的唯一方法是手动指定所有列,并排除不需要的列。 这确实很耗时,因此我正在寻找节省时间和精力的方法,并且在表具有更多/更少列的情况下,还可以进行将来的维护。 回答1 您可以这样尝试: /* Get the data into a temp table */ SELECT * INTO #TempTable FROM YourTable /* Drop the columns that are not needed */ ALTER TABLE #TempTable DROP COLUMN ColumnToDrop /* Get results and drop temp table */ SELECT * FROM #TempTable DROP TABLE #TempTable 回答2 不。 维护轻量级的最佳实践是仅指定必需的列。 至少有两个原因: 这使您的客户端和数据库之间的合同稳定。 每次相同的数据性能,涵盖指标 编辑(2011年7月): 如果从对象资源管理器中拖动表的“ Columns节点,它将为您在“查询”窗口中放置一个CSV列列表
  • jQuery UI自动完成小部件搜索配置(jQuery UI Autocomplete widget search configuration)
    问题 我正在研究使用jQuery UI自动完成小部件以按名字或姓氏实现用户查找。 默认情况下,自动补全看起来似乎是按字符顺序查找单词的,无论单词中是否出现该单词。 因此,如果您拥有诸如javascript, asp, haskell类的数据javascript, asp, haskell并输入'as' ,则将得到全部三个。 我希望它只匹配单词的开头。 因此,在上面的示例中,您只会得到'asp' 。 有没有一种方法可以配置自动完成窗口小部件来执行此操作? 最终,像在Gmail中那样,以名字或姓氏开头进行匹配会更好。 注意:我正在尝试找出一种方法来专门使用jQuery UI小部件。 由于我已经在项目中使用jQuery UI,因此我打算坚持使用它,并尝试不向我的Web应用程序中添加其他库。 回答1 在jQuery UI v1.8rc3中,自动完成小部件接受源选项,该源选项可以是字符串,数组或回调函数。 如果是字符串,则自动完成功能将对该URL进行GET以获得选项/建议。 如前所述,如果是数组,则自动完成功能会搜索数组项中任何位置是否存在键入的字符。 最终的变体就是您想要的-回调函数。 从自动完成文档中: 第三种变体,回调,提供了最大的灵活性,可用于将任何数据源连接到自动完成。 回调有两个参数: • request对象,具有一个称为“ term”的单个属性,该属性引用文本输入中当前的值。
  • jQuery获取选定的选项值(不是文本,而是属性“值”)(jQuery get selected option value (not the text, but the attribute 'value'))
    问题 好的,我有以下代码: <select name="selector" id="selector"> <option value="1">Option 1</option> <option value="2">Option 2</option> </select> 我想获取所选选项的值。 示例:选择了“选项2”,其值为“ 2”。 “ 2”是我需要获取的值,而不是“选项2”。 回答1 04/2020:更正了旧答案 在选定的选项上使用:selected伪选择器,然后使用.val函数获取选项的值。 $('select[name=selector] option').filter(':selected').val() 注意:使用过滤器比直接在第一个查询中使用:selected选择器更好。 如果在更改处理程序内部,则可以仅使用this.value来获取选定的选项值。 有关更多选项,请参见演示。 //ways to retrieve selected option and text outside handler console.log('Selected option value ' + $('select option').filter(':selected').val()); console.log('Selected option value ' + $('select
  • 如何在不提交的情况下从FORM获取值?(How to get VALUE from FORM without Submitting it?)
    问题 我想在不提交表单的情况下从Form中获得价值,因为客户必须选择正确的房屋模型类型才能获得适合所选房屋模型的正确表单,而无需提交,只需选择房屋模型即可,例如,它继续之后的其他形式。 到目前为止,我已经尝试过: <form method="GET" action="foo.php"> <select name="house_model"> <option value="">------</option> <option value="<?php echo $model1;?>">Model 1</option> <option value="<?php echo $model2;?>">Model 2</option> <option value="<?php echo $model3;?>">Model 3</option> </select> </form> <?php $a = $_GET["housemodel"]; if($a<>'') { if($a == $model1) { echo "<input type=\"text\" name=\"a\" value=\"something model1\">"; } else if($a == $model2) { echo "<input type=\"text\" name=\"b\" value=\
  • 将MySQL中的数据存储为JSON(Storing Data in MySQL as JSON)
    问题 我认为这是一个n00b要做的事情。 因此,我从未做到过。 然后,我看到FriendFeed做到了这一点,实际上使他们的数据库扩展更好,并减少了延迟。 我很好奇我是否应该这样做。 而且,如果是这样,正确的方法是什么? 基本上,在什么地方学习如何将MySQL中的所有内容存储为CouchDB类数据库是个好地方? 将所有内容存储为JSON似乎会变得更加轻松快捷(无需构建,延迟更短)。 另外,是否容易编辑,删除等以JSON形式存储在数据库上的内容? 回答1 CouchDB和MySQL是两个非常不同的野兽。 JSON是将内容存储在CouchDB中的本地方法。 在MySQL中,最好的办法是将JSON数据作为文本存储在单个字段中。 这将完全违背将其存储在RDBMS中的目的,并使每个数据库事务都大大复杂化。 别。 话虽这么说,FriendFeed似乎在MySQL之上使用了极其自定义的架构。 这实际上取决于您要存储的内容,关于如何滥用数据库系统几乎没有一个明确的答案,因此这对您来说很有意义。 鉴于本文很老,并且反对Mongo和Couch的主要原因是不成熟,如果MySQL不适合您,我将重新评估这两个。 到现在他们应该已经成长了很多。 回答2 每个人的评论似乎都是从错误的角度出发的,可以通过PHP将JSON代码存储在关系数据库中,而且这样加载和显示复杂数据的速度实际上更快
  • 从mysql中的大表中快速选择随机行(quick selection of a random row from a large table in mysql)
    问题 从大型mysql表中选择随机行的快速方法是什么? 我正在使用php,但是我对任何解决方案都感兴趣,即使它是另一种语言也是如此。 回答1 抓住所有ID,从中随机选择一个ID,然后检索整行。 如果您知道ID是连续无孔的,则只需获取最大值并计算一个随机ID。 如果到处都有孔,但大多数是顺序值,并且您不关心随机偏斜,请抓住最大值,计算一个id,然后选择ID等于或大于您所计算的ID的第一行。 偏斜的原因是,跟着另一个id的那些洞,跟随这些洞的id更有可能被选中。 如果您是随机订购的话,那么您手上的桌子扫描将很糟糕,而“快速”一词不适用于这样的解决方案。 不要这样做,也不要按GUID订购,它有相同的问题。 回答2 我知道必须有一种方法可以在单个查询中快速完成该操作。 这里是: 一种无需外部代码参与的快速方法, http://jan.kneschke.de/projects/mysql/order-by-rand/ SELECT name FROM random AS r1 JOIN (SELECT (RAND() * (SELECT MAX(id) FROM random)) AS id) AS r2 WHERE r1.id >= r2.id ORDER BY r1.id ASC LIMIT 1; 回答3 MediaWiki使用了一个有趣的技巧(用于Wikipedia的Special
  • 如何获得所选单选按钮的价值?(How to get value of selected radio button?)
    问题 我想从一组单选按钮中获取选定的值。 这是我的HTML: <div id="rates"> <input type="radio" id="r1" name="rate" value="Fixed Rate"> Fixed Rate <input type="radio" id="r2" name="rate" value="Variable Rate"> Variable Rate <input type="radio" id="r3" name="rate" value="Multi Rate" checked="checked"> Multi Rate </div> 这是我的js: var rates = document.getElementById('rates').value; var rate_value; if(rates =='Fixed Rate'){ rate_value = document.getElementById('r1').value; }else if(rates =='Variable Rate'){ rate_value = document.getElementById('r2').value; }else if(rates =='Multi Rate'){ rate_value = document.getElementById(
  • 从mysql中的大表中快速选择随机行(quick selection of a random row from a large table in mysql)
    问题 从大型mysql表中选择随机行的快速方法是什么? 我正在使用php,但是我对任何解决方案都感兴趣,即使它是另一种语言也是如此。 回答1 抓住所有ID,从中随机选择一个ID,然后检索整行。 如果您知道ID是连续无孔的,则只需获取最大值并计算一个随机ID。 如果到处都有孔,但大多数是顺序值,并且您不关心随机偏斜,则获取最大值,计算一个id,然后选择ID等于或大于您所计算的ID的第一行。 偏斜的原因是,跟着另一个id的那些洞,跟随这些洞的id会有更高的机会被选中。 如果您是随机订购的话,那么您手上的桌子扫描将很糟糕,而“快速”一词不适用于这样的解决方案。 不要这样做,也不要按GUID订购,它有相同的问题。 回答2 我知道必须有一种方法可以在单个查询中快速完成该操作。 这里是: 一种无需外部代码参与的快速方法, http://jan.kneschke.de/projects/mysql/order-by-rand/ SELECT name FROM random AS r1 JOIN (SELECT (RAND() * (SELECT MAX(id) FROM random)) AS id) AS r2 WHERE r1.id >= r2.id ORDER BY r1.id ASC LIMIT 1; 回答3 MediaWiki使用了一个有趣的技巧
  • 在使用jQuery的JavaScript对象中向选项添加选项的最佳方法是什么?(What is the best way to add options to a select from a JavaScript object with jQuery?)
    问题 使用jQuery从JavaScript对象向<select>添加选项的最佳方法是什么? 我正在寻找不需要插件的东西,但是我也对那里的插件感兴趣。 这是我所做的: selectValues = { "1": "test 1", "2": "test 2" }; for (key in selectValues) { if (typeof (selectValues[key] == 'string') { $('#mySelect').append('<option value="' + key + '">' + selectValues[key] + '</option>'); } } 干净/简单的解决方案: 这是matdumsa的简化版本: $.each(selectValues, function(key, value) { $('#mySelect') .append($('<option>', { value : key }) .text(value)); }); 对matdumsa的更改:(1)删除了append()中选项的关闭标记,(2)将属性/属性移到了地图中,作为append()的第二个参数。 回答1 与其他答案相同,采用jQuery方式: $.each(selectValues, function(key, value) { $('#mySelect')