jquery検証プラグインを使用しようとしているフォームがあります。私の問題は、成功コールバックでラベルにアクセスできないことです。取得できますが、またはをlabel.attr('for')
試してみると、未定義になります。label.attr('id')
label.html()
これが私の検証呼び出しです:
<script type="text/javascript">
$(document).ready(function() {
$('#personal_info').validate({
rules: {
LastName: "required",
Age: "required"
},
messages: {
LastName: "",
Age: ""
},
errorPlacement: function(error, element) {
console.log('element.attr = '+element.attr('name'));
if(element.attr('name') == 'Age') {
console.log('element = '+element.parents().siblings('label').html());
element.parents().siblings('label').removeClass('highlight').addClass('warning');
}
//error.insertBefore(element.parent().children("br"));
},
// specifying a submitHandler prevents the default submit, good for the demo
submitHandler: function() {
document.personal_info.submit();
},
validClass: "checkmark",
// set this class to error-labels to indicate valid fields
success: function(label) {
console.log('the label for = '+label.attr('for'));
console.log('the label id = '+label.attr('id'));
}
});
});
</script>
これが私のhtmlの一部です:
<label for="Age" id="age18" class="highlight"> Are you at least 18 years of age?</label>
<table id="OnlineAppWizard_InputAge18" border="0">
<tr>
<td>
<input id="Age18_yes" type="radio" name="Age" value="Yes" <?
if ($Age18 == "Yes") {
print "checked";
}
?>/>
<label for="Age18_yes">Yes</label>
</td>
<td>
<input id="Age18_no" type="radio" name="Age" value="No" <?
if ($Age18 == "No") {
print "checked";
} ?>/>
<label for="Age18_no">No</label>
</td>
</tr>
</table>
ラジオボタンの1つをクリックすると、これがfirebugコンソールに表示されます。
the label for = Age
the label id = undefined
htmlスニペットから、「Age」の「for」属性を持つラベルタグにも「age18」の「id」属性があることがわかります。