0

Possible Duplicate:
How to find index of object in a JavaScript array with jQuery

I need to find value of input entered if already exists in .data() function.

I am trying this way.

jQuery

var array = $("form[name=update]").data("values", {"v1": "value1", "v2": "value2", "v3": "value3", "v4": "value4", "v5": "value5"});
if ($.inArray("value1", array) > -1){alert("duplicate value")}

But it does nothing.

Please see and suggest any possible way to do this.

Thanks.

asked Jan 19, 2013 at 5:48
5
  • array isn't an array; it's an instance of jQuery, and the values you are setting are in an object anyway. Read api.jquery.com/jQuery.data Commented Jan 19, 2013 at 5:54
  • @danronmoon Ok is there a way to find value if exist data function. Commented Jan 19, 2013 at 5:56
  • What are you trying to achiev? Tell us that and perhaps we can find a completely different solution Commented Jan 19, 2013 at 5:57
  • Grep: stackoverflow.com/a/1758986/295783 Commented Jan 19, 2013 at 6:04
  • @mplungjan i cant figure out how to use $.grep, can you suggest something. Thanks. Commented Jan 19, 2013 at 6:18

2 Answers 2

0

Here

grep (which does not do objects) did not work for me either.

Here is a $.each version

DEMO

$(function() {
 $("form[name=update]").data("values", {"v1": "value11", "v2": "value2", "v3": "value3", "v4": "value4", "v5": "value5"});
 $(".but").on("click",function(e) {
 var fData = $("form[name=update]").data("values");
 var val = $(this).val();
 console.log(fData);
 $.each(fData, function(n,i) { 
 console.log("!!!",n,i)
 if (i===val) {
 alert("duplicate value");
 return false;
 } 
 }) 
 e.preventDefault() 
 });
}); 

This is now I had a look, the same method as danronmoon's solution

DEMO

$(function() {
 $("form[name=update]").data("values", {"v1": "value11", "v2": "value2", "v3": "value3", "v4": "value4", "v5": "value5"});
 $(".but").on("click",function(e) {
 var fData = $("form[name=update]").data("values");
 var val = $(this).val();
 console.log(fData);
 for (var o in fData) { 
 console.log("!!!",o,fData[o])
 if (fData[o]===val) {
 alert("duplicate value");
 break;
 } 
 } 
 e.preventDefault() 
 });
}); 
answered Jan 19, 2013 at 7:01
Sign up to request clarification or add additional context in comments.

1 Comment

Its giving false alert for value11, please see this demo.
0
$("form[name=update]").data("values", {/* values here*/});
// then later
var valueToLookFor = 'value1',
 formData = $("form[name=update]").data().values;
for (var i in formData) {
 if (formData[i] === valueToLookFor) {
 // you found it!
 }
}
answered Jan 19, 2013 at 6:00

5 Comments

What is 'it'? Please be more specific. I took a stab at it, but you may have to update your question to be less ambiguous.
i tried like you suggest formData = $("form[name=update]").data(); for (var i in formData) {if (formData[i] === 'value1') {alert('duplicate');}} it didnt show any alert.
I just updated. Try that
Still not working tried same way.
It works fine for me in the console. Try using console.logs and seeing what's in formData.