【问题标题】:Trouble selecting an item in a SELECT box with jQuery with a quot使用带有引号的 jQuery 在 SELECT 框中选择项目时遇到问题
【发布时间】:2010-02-03 12:17:04
【问题描述】:

我有一个带有列表的隐藏表单,当用户想要查看此表单时,我需要从中选择一个选项。 我正在使用 var assignee = '人名';

jQuery('#edit-form' option[value='+option+']:first').attr("selected", "selected");

我试过这样做,但这不起作用,因为选项标记中的值也没有用 \ 指定,所以找不到匹配项

jQuery('#edit-form option[value='+option.replace(/\'/,'\\\'')+']:first').attr("selected", "selected");

那么这样做是我唯一的选择吗?

jQuery('#edit-form option').each(function(){
  if(jQuery(this).val() == option) {        
   jQuery(this).attr("selected", "selected");
   return false;
     }
});

测试页面

<html>
<head>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>

  <script>
  //test vars
  var option1 = "option two";
  var option2 = "option '";
  var option = option2;

  $(document).ready(function(){
    $('#edit-form [name=select1] option').each(function(){
      if($(this).val() == option) {        
    $(this).attr("selected", "selected");
    return false;
       }
    });

    $('#edit-form [name=select2] option[value='+option+']:first').attr("selected", "selected");
    option = option.replace(/\'/,'\\\'');
    $('#edit-form [name=select3] option[value='+option+']:first').attr("selected", "selected");
  });
  </script>
</head>
<body>
  <form id="edit-form">
  <select name=select1>
  <option value="option one">option one</option>
  <option value="option two">option two</option>
  <option value="option two">option two</option>
  <option value="option \'">option \'</option>
  <option value="option '">option '</option>
  </select>
  <select name=select2>
  <option value="option one">option one</option>
  <option value="option two">option two</option>
  <option value="option two">option two</option>
  <option value="option \'">option \'</option>
  <option value="option '">option '</option>
  </select>  
  <select name=select3>
  <option value="option one">option one</option>
  <option value="option two">option two</option>
  <option value="option two">option two</option>
  <option value="option \'">option \'</option>
  <option value="option '">option '</option>
  </select>
</body>
</html>

【问题讨论】:

    标签: jquery character drop-down-menu


    【解决方案1】:

    怎么样:

    jQuery('#edit-form option[value="'+option+'"]:first').attr("selected", "selected");
    

    注意"' 字符的使用。

    例如这些都是有效的字符串:

    "Valid 'string'"
    'valid "string"'
    // also valid with escape chars
    "valid \"string"
    'valid \'string'
    

    但不是这些

    "not valid "string""
    'not valid 'string''
    

    您也可以使用语法高亮显示。

    编辑:

    如果我使用这个对我有用:

    $('#edit-form select[name="select3"] option[value="'+option+'"]').first().attr("selected", "selected");
    

    注意:我使用.first() 而不是:first 和正确的select[name="select3"]。确保使用正确的 jQuery 选择器。

    【讨论】:

    • 谢谢,但如果您尝试使用示例页面,您会发现它也不起作用。
    • 好吧,这确实使它起作用了!谢谢你,我看到 jQuery 有时表现得很奇怪。
    猜你喜欢
    • 2011-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    • 2020-11-05
    • 2011-07-06
    • 1970-01-01
    相关资源
    最近更新 更多