equalToメソッドから現在の要素にアクセスする方法はありますか?下のコードでは、変更すると動作しますjQueryのvalidateメソッド:現在の要素へのアクセス
equalTo: "#" + $("#t2").parent().parent().find("input[name='thing1']").attr("id")
しかし、私はむしろハードコードします。
私はstackoverflowを検索して、役立つ回答を見つけることができません。
注:これはこのフォームを作成する最善の方法ではありません。私は命名法について何もできません。
<!DOCTYPE html>
<html>
<head>
<!-- include jQuery and the validate plugin -->
<script>
$(document).ready(function(){
$.validator.prototype.checkForm = function() {
this.prepareForm();
for (var i = 0, elements = (this.currentElements = this.elements()); elements[i]; i++) {
if (this.findByName(elements[i].name).length != undefined && this.findByName(elements[i].name).length > 1) {
for (var cnt = 0; cnt < this.findByName(elements[i].name).length; cnt++) {
this.check(this.findByName(elements[i].name)[cnt]);
}
} else {
this.check(elements[i]);
}
}
return this.valid();
}
$("#formthing").validate({
rules: {
thing1: "required",
thing2: {
required: true,
equalTo: "#" + $(this).parent().parent().find("input[name='thing1']").attr("id")
}
},
messages: {
thing1: "Please enter somthing",
thing2: {
required: "Please repeat somthing",
equalTo: "Be sure it's equal"
}
}
});
});
</script>
</head>
<body>
<form id="formthing" method="post" action="http://mcclurg.co/">
<div>
<div><label for="t1">Thing 1 </label><input type="text" name="thing1" id="t1" /></div>
<div><label for="t2">Thing 2 </label><input type="text" name="thing2" id="t2" /></div>
</div>
<br /><br />
<div>
<div><label for="t3">Thing 1' </label><input type="text" name="thing1" id="t3" /></div>
<div><label for="t4">Thing 2' </label><input type="text" name="thing2" id="t4" /></div>
</div>
<br /><br />
<input type="submit" value="Stuff man" />
</form>
</body>
</html>
、あなたが 'name'の属性を複製して作成した問題を回避するプロトタイプを書いてポイントを強調して良いでしょう。 – Sparky