2
가정하자 나는 한 다음 필드관련 입력 오류의 복잡한 객체를지도 필드
<input name="a" />
<input name="b[0]" />
<input name="b[1]" />
<input name="c[d]" />
<input name="c[e][f]" />
하고 효율적인 방법이 될 것입니다 무엇 각 입력
var errors = {
a: 'error a ', // a's error
b: [
'error b0', // b[0]'s error
'error b1' // b[1]'s error
],
c: {
d: 'error cd ', // c[d]'s error
e: {
f: 'error cef' // c[e][f]'s error
}
}
}
에 대한 오류를 누른 다음 개체 각 오류를 관련 입력에 매핑 하시겠습니까? 아마 좋은하지 않은 - 내가이 일을 생각할 수
<input name="a" />
<div class="error">error a</div>
<input name="b[0]" />
<div class="error">error b0</div>
<!-- etc -->
수있는 유일한 방법은 입력보다 name
속성을 반복하고 각각 평가 eval
을 사용하는 것입니다. 다음과 같음 :
$(':input').each(function() {
var name = this.name.replace(/^([a-z0-9_\-]+)(.*)$/i, 'errors[$1]$2');
var error = eval(name);
$(this).after('<div class="error">' + error + '</div>');
});
더 좋은 방법이 있습니까?
와우 좋은. 당신은'r [e] || (r [e] = arr [i + 1]? {} : '')'? – Mikey
names 배열을 반복하여 오류 객체가 될 객체 또는 누적 기 내부의 중첩 값을 찾고 있습니다. 그리고이'r [e] || (r [e] = arr [i + 1]? {} : '')'마지막 요소와 일치하는 것이 없다는 것을 의미합니다. 그렇지 않으면 빈 문자열을 반환합니다. 그렇지 않으면 빈 객체가 반환되어 키가 발견되지 않으면 오류가 발생하지 않습니다. –
고마워. – Mikey