在所有标签中查找单词并在jQuery中替换它

Finding word in all labels and replace it in jQuery

提问人:Xia 提问时间:6/12/2020 更新时间:6/12/2020 访问量:158

问:

我有多个输入字段,标签以单词“Shop”开头,即 店铺信 : 店铺信号 : 店铺信函档案 : 我有一个下拉列表,其中包含两个选项“商店”和“商店”。我想在从下拉列表中选择“存储”选项时更改为“存储”。

这是我到目前为止所做的;

<form action="" id="form_type">
    <label for="type">Choose a type:</label>
    <select id="type">
        <option value="shop">Shop</option>
        <option value="store">Store</option>
    </select><br><br>
    <label for="Shop_Letter">Shop Letter :</label>
    <input type="text" id="Shop_Letter" name="Shop_Letter"><br><br>
    <label for="Shop_Letter_No">Shop Letter No :</label>
    <input type="text" id="Shop_Letter_No" name="Shop_Letter_No"><br><br>
    <label for="Shop_Letter_File">Shop Letter File :</label>
    <input type="text" id="Shop_Letter_File" name="Shop_Letter_File"><br><br>
</form>


$("#type").on('change', function(){
        var shop_letter = $("label[for='Shop_Letter']").html(); //Get the text
        var shop_letter_no = $("label[for='Shop_Letter_No']").html(); //Get the text
        if (this.value == 'store'){
            $("label[for='Shop_Letter']").html(shop_letter.replace("Shop", "Store"));
            $("label[for='Shop_Letter_No']").html(shop_letter_no.replace("Shop", "Store"));
        }else{
            $("label[for='Shop_Letter']").html(shop_letter.replace("Store", "Shop"));
            $("label[for='Shop_Letter_No']").html(shop_letter_no.replace("Store", "Shop"));
        }
    });

当我手动选择标签并分配变量时,它确实以这种方式工作,但我想选择所有标签并使用适当的方法更改它。我似乎无法自己弄清楚这个问题。 谢谢

javascript html jquery-ui xhtml

评论


答:

1赞 Twisty 6/12/2020 #1

请考虑以下几点。

$(function() {
  function changeLabel(tObj, v) {
    tObj = $(tObj);
    tObj.html(v + tObj.text().slice(tObj.text().indexOf(" ")));
  }
  $("#type").on('change', function() {
    var sel = $(this).val();
    sel = sel.charAt(0).toUpperCase() + sel.slice(1);
    $("#form_type label").each(function(i, el) {
      if (i !== 0) {
        changeLabel(el, sel);
      }
    });
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form action="" id="form_type">
  <label for="type">Choose a type:</label>
  <select id="type">
    <option value="shop">Shop</option>
    <option value="store">Store</option>
  </select><br><br>
  <label for="Shop_Letter">Shop Letter :</label>
  <input type="text" id="Shop_Letter" name="Shop_Letter"><br><br>
  <label for="Shop_Letter_No">Shop Letter No :</label>
  <input type="text" id="Shop_Letter_No" name="Shop_Letter_No"><br><br>
  <label for="Shop_Letter_File">Shop Letter File :</label>
  <input type="text" id="Shop_Letter_File" name="Shop_Letter_File"><br><br>
</form>

如果你有一个字符串:,并且你想用 替换 ,你可以使用 .我们使用 Slice 从第一个字符串中获取文本并在新字符串前面添加。我把它移到一个功能上,使其易于一遍又一遍地使用。"Shop Letter File :"ShopStore.slice()" "

然后,我们需要遍历每个需要更改的标签(跳过第一个标签),并将此值和新值传递给函数。

评论

0赞 Xia 6/12/2020
是的,但这不会在第三个标签之后更改所有标签吗?假设如果另一个开发人员添加了一个带有不以 Shop 开头的标签的新输入,该输入也将被更改。:)
1赞 Twisty 6/12/2020
@Xia请提供一个更好的例子。您可以检查每个标签以查看标签中是否存在,也可以跳过它。"shop"
0赞 Xia 6/12/2020
哦,为什么我没有想到这一点。谢谢@Twisty。