使用 jQuery 在 SELECT 框中选择带有引号的项目时遇到问题

发布于 2024-08-20 06:32:08 字数 2422 浏览 3 评论 0原文

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

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

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

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>

I am having a hidden form with a list which I need to select an option from when a user wants to view this form.
I was using
var assignee = 'persons name';

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

I tried doing this, but this is not working as the value in the option tag is not specified with the \ as well, so it won't find a match

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

So is doing it this way the following my only option ?

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

a Test page

<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>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

遮了一弯 2024-08-27 06:32:08

怎么样:

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 选择器。

What about:

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

Note the use of the " and ' characters.

E.g. These are all valid strings:

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

but not these

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

You can also see this with the syntax highlighter.

Edit:

Works for me if I use this:

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

Note: I use .first() instead of :first and proper select[name="select3"]. Make sure that you use proper jQuery selectors.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文