Javascript indexOf不能返回精确值,有解决方案吗?

问题描述 投票:-2回答:2

请,如何添加多个查询并仅返回确切值?

    if( placeholder.indexOf('Document') != -1 ){
        $(this).addClass('cpf');
    }
    if( placeholder.indexOf("Document B") != -1 ){
        $(this).addClass('cnpj');
    }
    if( placeholder.indexOf("Document A and B") != -1 ){
        $(this).addClass('cpf_cnpj');
    }

如果我的占位符是“文档A和B”,则仅返回类“ cpf_cnpj”,而不返回所有类。

非常感谢!

javascript if-statement indexof
2个回答
0
投票

所以从最具体的if / else if开始

if (placeholder === 'Document A and B') {
  $(this).addClass('cpf_cnpj');
} else if (placeholder.indexOf("Document B") != -1) {
  $(this).addClass('cnpj');
} else { // or else if( placeholder.indexOf('Document') != -1 ){
  $(this).addClass('cpf');
}

0
投票

您可以尝试使用else...if,然后从较长的字符串开始进行比较:

Demo:

$('input').on('focus', function(){
  var placeholder = $(this).attr('placeholder');
  if( placeholder.indexOf('Document A and B') != -1 ){
    $(this).addClass('cpf_cnpj');
  }
  else if( placeholder.indexOf("Document B") != -1 ){
    $(this).addClass('cnpj');
  }
  else if( placeholder.indexOf("Document") != -1 ){
    $(this).addClass('cpf');
  }
});
input{
  display: block;
  margin-bottom: 10px;
}
.cpf { border: 2px solid red }
.cnpj { border: 2px solid green }
.cpf_cnpj { border: 2px solid blue }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<input size="1" type="text" name="form_fields[field_1]" id="form-field-field_1" class="elementor-field elementor-size-sm elementor-field-textual" placeholder="Document" maxlength="18">

<input size="1" type="text" name="form_fields[field_1]" id="form-field-field_1" class="elementor-field elementor-size-sm elementor-field-textual" placeholder="Document B" maxlength="18">

<input size="1" type="text" name="form_fields[field_1]" id="form-field-field_1" class="elementor-field elementor-size-sm elementor-field-textual" placeholder="Document A and B" maxlength="18">
© www.soinside.com 2019 - 2024. All rights reserved.