2016-12-04 1 views
1

PHP 스크립트에서 얻은 json 데이터를 기반으로 선택 입력 필드의 옵션을 채 웁니다.값을 기준으로 json 객체에서 키 검색

잘 작동하지만 선택한 추가 옵션을 기반으로 몇 가지 추가 정보 ()를 표시하려고합니다. 기본적으로, 선택한 옵션으로가는 열쇠를 찾을 수있는 방법을 찾고 있어요 :

$("#code").html(result[whichkey]["uniquecode"]); 

This fiddle 잘하면 좀 더 명확하게 내 질문을합니다.

도움을 주시면 감사하겠습니다.

답변

2

option 요소가 해당 개체의 uniquecode을 값으로 사용하여 만들어 졌다고 가정하면 개체에 다시 액세스해야하는 이유는 무엇입니까? 선택된 option ...의 value 속성을 검색하면됩니다.

당신이 당신의 예를 과도하게 단순화 한 단지 때문이다 가정하고, 배열 내의 객체가 option 요소 자체에서 개최되지 않은 다른 유용한 데이터를 보유 할, 당신은에 의해 객체의 배열을 필터링 할 $.grep을 사용할 수 있습니다 이 같은 uniquecode를 선택 : 난 개체에 foo 속성을 추가

var json = '[{"uniquecode":"b32dez2","name":"John Doe","foo":"bar"},{"uniquecode":"a2df32","name":"Adam Smith","foo":"buzz"}]'; 
 
var result = JSON.parse(json); 
 
var $sel = $('#names').change(function() { 
 
    var value = this.value; 
 
    var obj = $.grep(result, function(e) { 
 
    return e.uniquecode == value; 
 
    }); 
 
    $("#code").html(obj[0].uniquecode + '/' + obj[0].foo) 
 
});; 
 

 
result.forEach(function(obj) { 
 
    $('<option value="' + obj.uniquecode + '">' + obj.name + '</option>').appendTo($sel) 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select id="names"></select> 
 
<div id="code"></div>

참고 도스의 외부 개체의 속성에 액세스하는 방법을 보여 e는 option 요소에 직접 배치됩니다.

또한 option 요소를 생성하는 코드를 단순화했습니다. 프로젝트에서 jQuery를 한 번 사용하면 모든 곳에서 사용할 수 있습니다.

+0

정말 내 질문을 지나치게 단순화 시켰습니다. 배열 내의 객체는 option 요소 자체에 포함되지 않은 다른 유용한 데이터를 보유합니다. 당신의 본보기는 내가 찾고있는 것을 정확하게합니다. '$ .grep'에 대해 몰랐습니다. 고마워요! – binoculars

+0

새로운 문제가 발생했습니다. jQuery 유효성 검사 (https://github.com/jzaefferer/jquery-validation)를 사용하여 양식의 유효성을 검사합니다. 이 플러그인으로 특정 규칙을 정의 할 수 있습니다 :'rules : { '입력 필드 이름 : {required : true, range : [60, 120]}'. 이것은 60에서 120 사이의 자릿수만을 허용합니다. range_upperlimit과 range_lowerlimit이 json 객체의 일부이기도 한 경우 선택한 옵션에 따라이 범위를 어떻게 동적으로 변경할 수 있습니까? – binoculars

+0

나는 유효성 검사기가 요소에 추가하는 속성을 존중하여 규칙을 설정한다고 믿습니다. 자세한 내용은 설명서를 확인하거나 자유롭게 새로운 질문을 시작하십시오. –

관련 문제