ในหน้าของฉัน ฉันมีแบบฟอร์มที่ครบถ้วน 3 แบบ แต่ละแบบมีปุ่มส่งเป็นของตัวเอง โดยมี ID ที่แตกต่างกันสำหรับแต่ละแบบฟอร์มและปุ่ม
<form action="" method="post" class="form-horizontal" id="formA">
...
<button id="formASend" type="submit" class="btn"> Submit</button>
</form>
<form action="" method="post" class="form-horizontal" id="formB">
...
<button id="formBSend" type="submit" class="btn"> Submit</button>
</form>
<form action="" method="post" class="form-horizontal" id="formC">
...
<button id="formCSend" type="submit" class="btn"> Submit</button>
</form>
ในจาวาสคริปต์ฉันมีตรรกะต่อไปนี้สำหรับปุ่มส่งแต่ละปุ่ม:
$.validator.setDefaults({
debug:true,
errorElement: 'span', //default input error message container
errorClass: 'help-inline', // default input error message class
focusInvalid: false, // do not focus the last invalid input)
highlight: function (element) { // hightlight error inputs
$(element).closest('.control-group').addClass('error'); // set error class to the control group
},
unhighlight: function (element) { // revert the change dony by hightlight
$(element)
.closest('.control-group').removeClass('error'); // set error class to the control group
}
});
$(function() {
var formA = $('#formA');
// init validator obj and set the rules
formA.validate({
rules: {
...
}
});
formA.submit(function () {
return formA.valid();
});
var formB = $('#formB');
// init validator obj and set the rules
formB.validate({
rules: {
...
}
});
formB.submit(function () {
return formB.valid();
});
var formC = $('#formC');
// init validator obj and set the rules
formC.validate({
rules: {
...
}
});
formC.submit(function () {
return formC.valid();
});
});
ส่งงานได้สำหรับแบบฟอร์มแรก และใช้งานไม่ได้กับอีกสองแบบฟอร์ม ฉันได้ตรวจสอบดัชนี html ด้วย DOMLint แล้ว และไม่มีปัญหาใดๆ เหตุการณ์การคลิกถูกทริกเกอร์ แบบฟอร์มถูกต้อง ส่งคืนค่าจริง แต่ไม่ส่ง
การตรวจสอบทำงานอย่างถูกต้อง โดยตรวจสอบเฉพาะแบบฟอร์มที่ส่งมาเท่านั้น
จะใช้กฎที่แตกต่างกันกับแต่ละแบบฟอร์มได้อย่างไร
วิธีแก้ปัญหาที่เป็นไปได้
$.validator.setDefaults({
debug:true,
errorElement: 'span', //default input error message container
errorClass: 'help-inline', // default input error message class
focusInvalid: false, // do not focus the last invalid input)
highlight: function (element) { // hightlight error inputs
$(element).closest('.control-group').addClass('error'); // set error class to the control group
},
unhighlight: function (element) { // revert the change dony by hightlight
$(element)
.closest('.control-group').removeClass('error'); // set error class to the control group
},
submitHandler: function (form) {
if ($(form).valid()) {
form.submit();
}
}
});
$(function() {
var formA = $('#formA');
// init validator obj and set the rules
formA.validate({
rules: {
...
}
});
var formB = $('#formB');
// init validator obj and set the rules
formB.validate({
rules: {
...
}
});
var formC = $('#formC');
// init validator obj and set the rules
formC.validate({
rules: {
...
}
});
});
การเพิ่มตัวจัดการการส่ง ส่งคืนเหตุการณ์การส่งกลับเข้าสู่การดำเนินการ
.click()
s? หรือแค่อันนั้น ^ ข้างบน? - person dunli   schedule 04.04.2013.click()
s ใช่ การถอดพวกมันออกก็ไม่ได้ช่วยอะไรเช่นกัน การลบตัวจัดการการส่งไม่ได้ช่วยเช่นกัน - person Neara   schedule 04.04.2013debug:true
คืออะไร สมมุติ ที่จะทำ ย้ายมัน. ดูคำตอบของฉันสำหรับคำแนะนำอื่น ๆ - person Sparky   schedule 04.04.2013