jQuery ComboBox:无论我尝试啥,我都无法将值返回到我的选择框(无法以编程方式选择所需的选项)

Posted

技术标签:

【中文标题】jQuery ComboBox:无论我尝试啥,我都无法将值返回到我的选择框(无法以编程方式选择所需的选项)【英文标题】:jQuery ComboBox: No matter what I try, I can't get back value back to my select box (can't programmatically select desired option)jQuery ComboBox:无论我尝试什么,我都无法将值返回到我的选择框(无法以编程方式选择所需的选项) 【发布时间】:2012-09-26 01:15:39 【问题描述】:

我真的很努力在这里和谷歌上寻找可能的答案。我确实找到了一些答案,但是当我将它们应用于我的代码和我的情况时,它就不起作用了。

我试过了:

$("select#city option['City, ST']").attr('selected', 'selected');

我也试过了:

$("select#city").val('City, ST');

按照某处的建议。

我尝试将此代码放入 document.ready 函数 - 无济于事。然后我尝试将它放在顶部(虽然不是在头部),但没有 document.ready 但仍然相同。

此功能失败的原因可能是什么?调用它的时刻是否重要(我的意思是,如果我的带有值的选择框先呈现然后调用函数,这有关系吗?或者它可能是别的什么?

html 代码:

<div class="ui-widget">
            <h3>Location</h3>
            <form id="chooseCity" class="" action="" method="post">
                <select id="city" name="city">

                    <option value="Select Town">Select Town</option>
                    <option value='Acworth, NH'>Acworth, NH</option>
                    <option value='Alstead, NH'>Alstead, NH</option>
                    <option value='Alton, NH'>Alton, NH</option>
                    <option value='Alton Bay, NH'>Alton Bay, NH</option>
                    <option value='Amherst, NH'>Amherst, NH</option>
                    <option value='Andover, NH'>Andover, NH</option>
                    <option value='Antrim, NH'>Antrim, NH</option>
                    <option value='Concord, NH'>Concord, NH</option>
                </select>
            </form>
        </div>

这个循环会是罪魁祸首吗?也许它以某种方式干扰:

                <option value="Select Town">Select Town</option>
                    <?php foreach($arr as $city):
                        echo "<option value='$city'";
                        echo ($_POST['city-hp'] == $city) ? 'selected' : '';
                        echo ">".$city."</option>".PHP_EOL;
                    endforeach; ?>

重要编辑:

我发现了这段代码:

$(function() 
    $( "#city" ).combobox();
    $( "#toggle" ).click(function() 
        $( "#city" ).toggle();
    );
);

阻止我的组合框以编程方式选择所需的值。 但是这段代码对于选择框的样式至关重要。我已经从 jQuery UI 网站下载了示例并将其集成到我的网站中。

如何修改上述代码以保留其外观,同时允许所需的功能?

【问题讨论】:

您是想弄清楚选择了哪一个,还是预先选择了一个?你能包括一个选择的例子吗? 我不清楚“将值返回到我的选择框”是什么意思。请准确说明您想做什么。 请发布更多代码。更好,放入 JSFiddle。 从问题标题来看,我很确定他正在尝试以编程方式设置选定的值。 我有一个搜索页面。未登录的用户将被发送到登录屏幕。登录后,他们将被重定向回搜索结果。当我使用 totalStorage jquery 插件时,我能够获取预存储的值来重建我的数据库查询并获得我的结果,但我的选择框显示选择城市 【参考方案1】:

你可以试试这个以编程方式选择一个选项

HTML

<select id="city">
    <option value=1>CityOne</option>
    <option value=2>CityTwo</option>
</select>

JS

$('#city').val(2); // will select the item which has value=2

$('#city').prop("selectedIndex",1); // will select second item/index, first is 0

DEMO.

【讨论】:

您好,我发现了这段代码: $(function() $( "#city" ).combobox(); $( "#toggle" ).click(function () $( "#city" ).toggle(); ); );阻止我的选择框以编程方式选择所需的值。但是这段代码对于选择框的样式至关重要。我已经从 jQuery UI 网站下载了示例并将其集成到我的网站中。如何修改上述代码以保留其外观,同时允许所需的功能?【参考方案2】:

你的 jQuery works - 有别的东西在干扰。

我建议浏览您可能已安装的其他插件,看看它们是否覆盖了选定的索引,可能只是选择中的第一个 &lt;option&gt;。 或者,如果您想详细说明您正在使用哪些技术,也许有人可以进一步帮助您。

编辑:

在this related question 上查看答案 - 看来您必须编辑插件的源代码。

在组合框插件中找到这一行:

.addClass("ui-widget ui-widget-content ui-corner-left");

并在其后立即添加这一行:

input.val( $(select).find("option:selected").text());

Source

【讨论】:

我正在使用 PHP(Concrete5 CMS)。正如我在另一条评论中所说,我什至在正确的位置得到了字符串 selected="selected",但是选择框没有显示该值是选中的。 您好,我发现了这段代码: $(function() $( "#city" ).combobox(); $( "#toggle" ).click(function () $( "#city" ).toggle(); ); );阻止我的选择框以编程方式选择所需的值。但是这段代码对于选择框的样式至关重要。我已经从 jQuery UI 网站下载了示例并将其集成到我的网站中。如何修改上述代码以保留其外观,同时允许所需的功能? 您使用的是哪个组合框插件? 好的,我已经更新了我的答案。将来,请尝试在您的原始帖子中包含尽可能多的细节 - 这将真正帮助您获得快速、准确的答案。【参考方案3】:

试试这个

  $('select#city').find('option[value*="City"][value*="ST"]').attr('selected', 'selected');

$("select#city option[value='City, ST']").attr('selected', 'selected');

CHECK DEMO

【讨论】:

如何让这个函数在页面底部与我的其他脚本隔离运行?它会在顶部工作吗?它必须在 document.ready 上吗?【参考方案4】:

我遇到了这个错误,无论我编写什么代码都无法修复它(可能需要 3 个小时)。最后幸运的是,我浏览了http://www.onemoretake.com/2011/04/17/a-better-jquery-ui-combo-box/ 网页(感谢@Dan 解决了我的头痛问题),发现真正缺少的部分不在“OnLoad”上,而是在 ui 定义函数本身上。 Jquery Ui官方网页上的标准定义函数不包含程序选择选项。

这是应该添加到定义函数中的函数:

//allows programmatic selection of combo using the option value
        setValue: function (value) 
            var $input = this.input;
            $("option", this.element).each(function () 
                if ($(this).val() == value) 
                    this.selected = true;
                    $input.val(this.text);
                    return false;
                
            );
        

我还制作了另一个函数来通过选项文本而不是选项值更改选择

//allows programmatic selection of combo using the option text
            setValueText: function (valueText) 
                var $input = this.input;
                var selectedText;                   
                $("option", this.element).each(function () 
                    if ($(this).text() == valueText) 
                        this.selected = true;
                        $input.val(this.text);                                                    
                        return false;
                    
                );                        
            

您可以在 OnLoad 或其他函数上使用这些函数:

$("#yourComboBoxID").combobox("setValue", "Your Option Value");

$("#yourComboBoxID").combobox("setValueText", "Your Option Text");

【讨论】:

【参考方案5】:

test 是 javascript 对象。

test.controlid 是小部件实例的 id。

test.value 是您要选择的字符串。

你不需要测试对象,你可以直接使用id和value。


$("#" + test.controlid).parent().find("span").children("input").val(test.value);

var newObject = new Object();

newObject.item = new Object();

newObject.item.option = $('#' + test.controlid +' > option[value="' + test.value + '"]')[0];

$("#" + test.controlid).parent().find("span").children("input").trigger("autocompleteselect", newObject);

【讨论】:

欢迎来到 Stack Overflow!这是我来回顾作为你的第一个答案。它有几个问题。首先 - 你需要format the code correctly。其次,由于这是一个已被接受的答案的老问题 - 它确实需要一些额外的测试来解释为什么它比接受的答案做得更好(或完全不同的方法)。

以上是关于jQuery ComboBox:无论我尝试啥,我都无法将值返回到我的选择框(无法以编程方式选择所需的选项)的主要内容,如果未能解决你的问题,请参考以下文章

无论我尝试啥,我都无法让这个应用程序匹配所有不同的设备尺寸,关于如何使用这样的约束有啥建议吗?

WPF在固定位置的切换按钮下方弹出窗口

表单标签中的按钮不会提交或响应Javascript / Jquery

jQuery Combobox 和数据库问题

Laravel 4 - 无论我输入啥代码,我的 css 页面都会出错

检测何时在 Winforms 上单击 ComboBox