【问题标题】:jQuery - how to escape unicode character from checkbox value selector? [closed]jQuery - 如何从复选框值选择器中转义 unicode 字符? [关闭]
【发布时间】:2020-02-07 18:35:19
【问题描述】:

我发现了很多关于如何转义 css 中具有其他含义的字符的示例。但是我找不到逃避或忽略其他语言字符的方法。

这是我的代码:

$("input[value='aaabbbcccż uuuąaaę']").change(function() {
  console.log('change event fired');
  if (this.checked) {
    $('#text-block').fadeIn('slow');
  } else {
    $('#text-block').fadeOut('slow');
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<span class="wpcf7-form-control wpcf7-checkbox"><span class="wpcf7-list-item first">
        <input type="checkbox"
                name="choose-what-pl[]" value="aaabbbcccż uuuąaaę">
                <span class="wpcf7-list-item-label">Option A</span></span>
<span class="wpcf7-list-item"><input type="checkbox"
                name="choose-what-pl[]" value="aaaa bbb  ę dsfsd jiojuoi sdfds lłdsóą">
                <span
                class="wpcf7-list-item-label">option X</span></span>
<span class="wpcf7-list-item last">
            <input type="checkbox" name="choose-what-pl[]"
                value="safas łsdfs xc óxzc ż">
                <span class="wpcf7-list-item-label">Option Y</span></span>
</span>ł

此代码不起作用。 但是,如果我更改 html 并给出 aaabbbcccz uuuaaae 的值,则以下代码有效:

    $("input[value='aaabbbcccz uuuaaae']").change(function(){
    if (this.checked) {
        $('#text-block').fadeIn('slow');
    }
    else {
        $('#text-block').fadeOut('slow');
    }                   
});

这里是示例 HTML:

问题是我无法更改 HTML,我只能通过 value 访问复选框,因为它是大量复选框中唯一更改的元素。

我还检查了不同的选择器 * ~ ^ 等。但我找不到任何可以帮助的。

托管表单和 .js 文件的网站确实位于头部:

<meta charset="UTF-8" />

请建议我如何解决这个问题。

【问题讨论】:

  • 我认为这可以帮助你:stackoverflow.com/questions/4618434/…
  • @HereticMonkey 我在操作中提供了一个示例 html。
  • @Bonfire 这似乎改变了值,但是如果它改变了它们,与 DOM 的比较将不起作用,因为在 DOM 中有这样的字符。
  • 是没有选中复选框还是无法淡入/淡出?而不是 .checked 你应该使用 .prop('checked')

标签: jquery


【解决方案1】:

特殊字符的选择不是问题。这是使用您的示例的工作代码。您可以根据需要查看/验证我正在选择带有其值的复选框,并显示适当的消息。因此选择不是问题。

$(function() {


  $("input[value='aaabbbcccż uuuąaaę']").on('change', function() {    
    $('#output').text('1st Checked: ' + $(this).prop('checked'));
  });
  
  $("input[value='aaaa bbb  ę dsfsd jiojuoi sdfds lłdsóą']").on('change', function() {    
    $('#output').text('2nd Checked: ' + $(this).prop('checked'));
  });
  
  $("input[value='safas łsdfs xc óxzc ż']").on('change', function() {    
    $('#output').text('3rd Checked: ' + $(this).prop('checked'));
  });
  
});
#output{margin-top:20px;padding-top:10px;border-top:1px solid #ccc;}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<span class="wpcf7-form-control wpcf7-checkbox"><span class="wpcf7-list-item first">
    <input type="checkbox" name="choose-what-pl[]" value="aaabbbcccż uuuąaaę">
    <span class="wpcf7-list-item-label">Masaz
      tantryczny</span></span>
  <span class="wpcf7-list-item"><input type="checkbox" name="choose-what-pl[]" value="aaaa bbb  ę dsfsd jiojuoi sdfds lłdsóą">
    <span class="wpcf7-list-item-label">Warsztat masażu tantrycznego 2-dniowy</span></span>
  <span class="wpcf7-list-item last">
    <input type="checkbox" name="choose-what-pl[]" value="safas łsdfs xc óxzc ż">
    <span class="wpcf7-list-item-label">Voucher na masaż jako
      prezent</span></span>
</span>
<div id="output"></div>

【讨论】:

  • 我在这里看到它有效。但在我的网站上没有。如果我在浏览器中打开 js 文件,我会看到单词“aaabbbcccż”更改为“aaabbbcccż”
【解决方案2】:

我找到了解决方案。我有:

<script src="../skrypty.js"></script>

我不得不将其更改为:

<script src="../skrypty.js" charset="UTF-8"></script>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-27
    • 2010-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-08
    • 1970-01-01
    相关资源
    最近更新 更多