How to find an element using "substring or contains" of value of HTML Attribute in selector using JQuery?

Viewed 723

How to find an element using substring of HTML Attribute value in selector?

I am trying to find whether div contains an input with docnumber startes with letter 'S'

 alert($("#forbDokProd").find(".dokMalProd input[name='check2'] [data-doknumber*='S'").length > 0)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<div id="doc" class="docParent">
  <input type="checkbox" name="check2" class="ballu" value="123" data-docnumber="S004"> <---Starts with S
  <input type="checkbox" name="check2" class="ballu" value="123" data-docnumber="B004"> <---Starts with B
  <input type="checkbox" name="check2" class="ballu" value="123" data-docnumber="B005"> <---Starts with B
</div>

https://jsfiddle.net/vfse1caL/1/

Not preferring For Each

3 Answers

Your selector is wrong. It should not contain space between [name=] and [data-doknumber]. It also should be ^= to only starts with:

".dokMalProd input[name='check2'][data-doknumber^='S']" 

alert($("#forbDokProd").find(".dokMalProd input[name='check2'][data-docnumber^='S']").length)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="forbDokProd">
  <div id="doc" class="docParent dokMalProd">
    <input type="checkbox" name="check2" class="ballu" value="123" data-docnumber="S004">
    <input type="checkbox" name="check2" class="ballu" value="123" data-docnumber="B004">
    <input type="checkbox" name="check2" class="ballu" value="123" data-docnumber="B005">
  </div>
</div>


There are also other typos: missing closing ], wrong HTML structure and selectors.

The [attribute^=value] selector selects each element with a specific attribute, with a value beginning in a specific string. Remove the space between the selectors.

console.log($("#doc").find("input[name='check2'][data-docnumber^='S']").length > 0)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="doc" class="docParent">
  <input type="checkbox" name="check2" class="ballu" value="123" data-docnumber="S004"> <!---Starts with S-->
  <input type="checkbox" name="check2" class="ballu" value="123" data-docnumber="B004"> <!---Starts with B-->
  <input type="checkbox" name="check2" class="ballu" value="123" data-docnumber="B005"> <!---Starts with B-->
</div>

You are having a type error in your code, your using docnumber and doknumber

alert($("#doc").find("input[name='check2'][data-docnumber*='S']").length > 0)

demo

console.log($("#doc").find("input[name='check2'][data-docnumber*='S']").length > 0)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="doc" class="docParent">
  <input type="checkbox" name="check2" class="ballu" value="123" data-docnumber="S004">
  <input type="checkbox" name="check2" class="ballu" value="123" data-docnumber="B004">
  <input type="checkbox" name="check2" class="ballu" value="123" data-docnumber="B005">
</div>

Related