根据所选的下拉列值从字符串中删除特定的char

时间:2017-10-05 13:28:50

标签: jquery

我正在尝试从字符串中删除特定字符,具体取决于下拉列表的选定值。

我想要实现的基本上,只有#lang.val()== en,删除addr字符串中的第一个逗号。

这是我到目前为止所拥有的。

$(document).ready(function() {
  $('#mainaddress').change(function() {
    var addr = $(this).find('option:selected').data('addr');
    if ($('#lang').val() == 'fr') {
      $('#theaddress').text(addr);
    } else if ($('#lang').val() == 'en') {
      addr.replace(new RegExp(","), '');
      $('#theaddress').text(addr);
    }
  })
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>
  <select id="lang">
        <option disabled="1" selected="selected" class="succtext">language</option>
        <option value="en">english</option>
        <option value="fr">french</option>
      </select>
</p>
<p>
  <select id="mainaddress">
        <option disabled="1" selected="selected">City</option>
        <option value="" data-addr="11, abc, 90210">New York</option>
        <option value="" data-addr="22, qwe, 57937">Toronto</option>
        <option value="" data-addr="33, asd, 59384">Tokyo</option>
      </select>
</p>
<p>
  <span id="theaddress">-----</span>
</p>

如果在addr之后选择了lang怎么办?处理这个问题的最简单方法是什么?

2 个答案:

答案 0 :(得分:2)

试试这个。它将处理选择addr后选择语言的情况。

&#13;
&#13;
$(document).ready(function() {
   $("#lang").change(function(){
     $('#mainaddress').trigger("change")
   })
   
   $('#mainaddress').change(function() {
     var addr = $(this).find('option:selected').data('addr');
     if(addr==undefined){
       // do nothing
     }
     else if ($('#lang').val() == 'fr') {
       $('#theaddress').text(addr);
       console.log('FRENCH!');
     } else if ($('#lang').val() == 'en') {
       new_text = addr.replace(/,/, '');
       $('#theaddress').text(new_text);
       console.log('ENGLISH!');
     }
   })
 });
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>
  <select id="lang">
    <option disabled="1" selected="selected" class="succtext">language</option>
    <option value="en">english</option>
    <option value="fr">french</option>
    <option value="fr">spanish</option>
  </select>
</p>
<p>
  <select id="mainaddress">
    <option disabled="1" selected="selected">City</option>
    <option value="" data-addr="11, abc, 90210">New York</option>
    <option value="" data-addr="22, qwe, 57937">Toronto</option>
    <option value="" data-addr="33, asd, 59384">Tokyo</option>
  </select>
</p>
<p>
  <span id="theaddress">xxxxxxxxxx</span>
</p>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

首先,检查字符串中是否有多个逗号,然后用空字符替换字符串中的逗号:

  if (addr.match(/,.*,/)) { // Check if there are 2 commas
    addr = addr.replace(',', ''); // Remove the first one
  }

如果要替换字符串中的所有逗号,请使用带有g标记的regular expression

addr = addr.replace(/,/g , '');

实施例

&#13;
&#13;
$(document).ready(function() {
  $('#mainaddress').change(function() {
    var addr = $(this).find('option:selected').data('addr');
    if ($('#lang').val() == 'fr') {
      $('#theaddress').text(addr);
    } else if ($('#lang').val() == 'en') {
      if (addr.match(/,.*,/)) { // Check if there are 2 commas
        addr = addr.replace(',', ''); // Remove the first one
        
        //To replace all commas
        //addr = addr.replace(/,/g , '');
      }
      $('#theaddress').text(addr);
    }
  })
});

 $(".subSelect").change(function(){
   $('#mainaddress').trigger("change")
 })
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>
  <select id="lang" class="subSelect">
        <option disabled="1" selected="selected" class="succtext">language</option>
        <option value="en">english</option>
        <option value="fr">french</option>
      </select>
</p>
<p>
  <select id="mainaddress">
        <option disabled="1" selected="selected">City</option>
        <option value="" data-addr="11, abc, 90210">New York</option>
        <option value="" data-addr="22, qwe, 57937">Toronto</option>
        <option value="" data-addr="33, asd, 59384">Tokyo</option>
      </select>
</p>
<p>
  <span id="theaddress">-----</span>
</p>
&#13;
&#13;
&#13;

要在语言之前选择地址来处理您的问题,您可以将所有未来事件绑定到.subSelect类选择器。这意味着如果您添加其他选择项,则它们都会触发#mainaddress的更改事件。