【问题标题】:JQuery select from options by textJQuery 从选项中按文本选择
【发布时间】:2014-06-12 19:43:22
【问题描述】:

我有以下html:

<select class="select optional form-control" id="search_form_handover_location" name="search_form[handover_location]"><option value="">Wybierz miejsce odbioru</
    <option value="Gdańsk">Gdańsk</option>
    <option value="Gdańsk">Gdańsk, Lotnisko</option>
    <option value="Ożarowice">Katowice, Lotnisko</option>
</select>    
<select class="select optional form-control" id="search_form_return_location" name="search_form[return_location]"><option value="">Wybierz miejsce zwrotu</option>
      <option value="Gdańsk">Gdańsk</option>
      <option value="Gdańsk">Gdańsk, Lotnisko</option>
      <option value="Ożarowice">Katowice, Lotnisko</option>
</select>

在我的应用程序中,我使用 JQuery 来自动完成第二次选择。因此,当您在第一次选择中选择“格但斯克”时,它也会在第二次选择中选择它。我的咖啡脚本代码如下所示:

$ ->
  $('#search_form_handover_location').change ->
    location = $("option:selected", this).val()
    $('#search_form_return_location').val(location)

现在我通过使用每个选项的值来做这件事。但现在我想通过使用不是值而是文本来做到这一点。因此,当您在第一次选择中选择“Gdańsk, Lotnisko”时,它将在第二次选择选项中自动选择相同的文本。有没有办法解决我的问题?

【问题讨论】:

  • 第一个和第二个选项的值相同,因此当您在第一个下拉列表中选择第一个或第二个选项时,它始终会在第二个下拉列表中选择第一个选项。如果这是您的问题,请更改值并尝试。

标签: javascript jquery coffeescript


【解决方案1】:

您可以使用此行获取文本,随心所欲地使用它...

$("#search_form_handover_location:selected").text();

【讨论】:

  • 感谢您的回复。我知道我可以使用“文本”方法获取文本。但现在我不知道如何在第二个选择菜单中通过此文本选择适当的选项。
  • 为此尝试:$('#search_form_return_location').find('option[text="your text here"]').attr('selected',true);。我还没有尝试过,但它可能对你有用......
【解决方案2】:

试试这个:在第一个下拉列表中获取文本表单,然后在第二个下拉列表中找到它。

$ ->
  $('#search_form_handover_location').change ->
     locationTxt = $("option:selected", this).text();

        $('#search_form_return_location option').each(function(){
           if($(this).text()==locationTxt)
               $(this).prop('selected',true);
           else
               $(this).removeProp('selected'); 
       });

【讨论】:

  • 感谢您的帮助。但不幸的是,这段代码不能按我的意愿工作。有时它可以正确搜索,有时不能。我不知道怎么了。
  • @MateuszUrbański,你检查浏览器控制台吗?有没有发现什么错误?
  • @MateuszUrbański,这对我来说很好用。见codepen.io/anon/pen/pcoKw
  • 您使用的是哪个浏览器?我已经尝试了和你说的一样的方法,但在 chrome 上工作正常。
  • @MateuszUrbański,它现在正在工作。只需使用 .prop 而不是 .attr 并在其他部分删除先前选择的选项。看到这个codepen.io/anon/pen/uzDcm。在 Firefox 上测试。
【解决方案3】:
var location=$("#search_form_handover_location:selected").text();

$("#search_form_return_location option").filter(function() {
    //may want to use $.trim in here
    return $(this).text() == location; 
}).attr('selected', true);

【讨论】:

  • 这段代码几乎可以正常工作,但有时会选择错误的东西。我不知道为什么。
  • @MateuszUrbański,您使用的是哪个 jquery 版本?如果您使用的是 v1.6+ jquery 版本,请使用 'prop' 而不是 'attr'。
  • 我想我知道问题出在哪里。当我在第一次选择中更改选定选项时,它是从第二次选择中选择并添加属性 :selected 到此选项。而这个属性会导致问题。当第二个选择的选项具有此属性“已选择”时,它无法正常工作。你知道如何解决这个问题吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-27
  • 2013-12-14
  • 1970-01-01
  • 2012-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多