2012-07-03 5 views
1

사용자 입력란에 #tag_field을 입력합니다. 사용자가 태그를 입력하면 지정한 값이 JSON 객체에 있는지 확인하고 싶습니다.배열에서 JSON 객체 만들기

아래에 포함 된 코드는 현재 사용하고 있지만 사용자 입력을 blur() 이벤트의 함수에 전달하는 방법을 잘 모르겠습니다.

var tags = [ 
        { 
         "tag": "php", 
         "id": "x&8j" 
        }, 
        { 
         "tag": "ruby", 
         "id": "x&8jX90" 
        } 
]; 

$j('#tag_field').blur(function(){ 
     var tagMap = {}; 
     var i = null; 
     for (i = 0; tags.length > i; i += 1) { 
      tagMap[tags[i].tagName] = tags[i]; 
     } 

     var hasTag = function(tagName) { 
      return tagMap[tagName]; 
     }; 
    }); 

답변

1

일부 like this

이 태그에 반대 방금 입력 값을 가지고 이름과 비교해야합니까 의미합니까?

$('#tag_field').blur(function() { 
    var tagMap = {}; 
    var i = null; 
    for (i = 0; tags.length > i; i += 1) { 

     if (tags[i].tag == $(this).val()) alert('exist' + tags[i].id) 
     //Check 
    } 

    var hasTag = function(tagName) { 
     return tagMap[tagName]; 
    }; 
});​ 
-1

당신은 Array.some를 사용하여 해제 할 때 가능한 최선을 수 있습니다 :

function tagExists(needle, haystack) { 
    if (Array.prototype.some) { 
    return haystack.some(function(element) { 
     return element.tag == needle 
    }); 
    } else { 
    for(i in haystack) { 
     if(typeof(haystack[i]) == 'object' && haystack[i].tag == needle) { 
     return true; 
     } 
    } 
    return false; 
    } 
} 

이 특정 시나리오에서 사용하려면의 라인을 따라 뭔가 :

$('#tag_field').on('blur', function() { 
    if(tagExists($(this).val(), tags) { 
    // Tag exists. 
    } 
}); 

참고이 있음 대/소문자를 구분할 수는 있지만 정의한대로 needleString.toLowerCase()과 각 태그를 호출하여 쉽게 조정할 수 있습니다.

마지막으로, 나는 까다 롭지 만 태그 맵은 기술적으로 JSON 객체가 아닙니다. 그것은 단순히 객체의 배열입니다.

1
var tags = [ 
    { 
     "tag": "php", 
     "id": "x&8j" 
    }, 
    { 
     "tag": "ruby", 
     "id": "x&8jX90" 
    } 
] 

$(function() { 
    $('#tag_field').on('blur', function(e) { 
     var $this = $(this), val = $.trim($this.val()); 
     if (!val) return false; 

     for(var i=0, l=tags.length;i<l;i++) { 
      if (tags[i]['tag'] === val) { 
       console.log('tag exists') 
       return tags[i]['tag']; 
      } 
     } 
     console.log('tag does not exist'); 
     return false; 
    }) 
}) 

태그 맵을 (가능한 경우) 단순화 할 것입니다 쉽게 아직

var tags = { "php" : "x&8j", "ruby" : "x&8jX90" } 

$(function() { 
    $('#tag_field').on('blur', function(e) { 
     if(tags[$.trim($(this).val())]) { 
      console.log('tag exists') 
     } else { 
      console.log('tag does not exist') 
     } 
    }) 
}) 
​ 
관련 문제