Bootstrap กับปลั๊กอินการตรวจสอบ jQuery


154

ฉันกำลังพยายามเพิ่มการตรวจสอบความถูกต้องให้กับฟอร์มของฉันด้วย jQuery Validation Plugin แต่ฉันมีปัญหาที่ปลั๊กอินใส่ข้อความแสดงข้อผิดพลาดเมื่อฉันใช้กลุ่มอินพุต

ปัญหา

$('form').validate({
    rules: {
        firstname: {
            minlength: 3,
            maxlength: 15,
            required: true
        },
        lastname: {
            minlength: 3,
            maxlength: 15,
            required: true
        }
    },
    highlight: function(element) {
        $(element).closest('.form-group').addClass('has-error');
    },
    unhighlight: function(element) {
        $(element).closest('.form-group').removeClass('has-error');
    }
});

รหัสของฉัน: http://jsfiddle.net/hTPY7/4/


สืบทอดแอปที่มี Bootstrap 3 หัวเราะว่าฉันได้พบสิ่งนี้และได้ทำบุ๊กมาร์กไว้เมื่อหลายปีก่อนเมื่อฉันสืบทอดแอปด้วย Bootstrap 3 ครั้งล่าสุด
Adrian J. Moreno

คำตอบ:


347

สำหรับความเข้ากันได้ทั้งหมดกับ twitter bootstrap 3 ฉันต้องแทนที่วิธีปลั๊กอินบางอย่าง:

// override jquery validate plugin defaults
$.validator.setDefaults({
    highlight: function(element) {
        $(element).closest('.form-group').addClass('has-error');
    },
    unhighlight: function(element) {
        $(element).closest('.form-group').removeClass('has-error');
    },
    errorElement: 'span',
    errorClass: 'help-block',
    errorPlacement: function(error, element) {
        if(element.parent('.input-group').length) {
            error.insertAfter(element.parent());
        } else {
            error.insertAfter(element);
        }
    }
});

ดูตัวอย่าง: http://jsfiddle.net/mapb_1990/hTPY7/7/


1
ดีมากแค่อยากพูดถึงเพื่อเพิ่ม $ (องค์ประกอบ). RemoveClass (errorClass); เพื่อไฮไลต์และ $ (องค์ประกอบ) .addClass (errorClass); เพื่อไฮไลต์ถ้าคุณต้องการความสำเร็จที่จะไม่ใช้คลาสบล็อกบูตความช่วยเหลือ
Jay Rizzi

3
วิธีนี้ใช้งานได้ดียกเว้นสำหรับสิ่งเดียว: ทดสอบกับ jQuery Validate 1.11.1 และการเรียกresetForm()ใช้ตัวตรวจสอบความunhighlightถูกต้องของฟอร์มจะไม่โทรหาองค์ประกอบที่ไม่ถูกต้องทำให้จำเป็นต้องลบhas-errorคลาสด้วยมือเมื่อทำการรีเซ็ตฟอร์ม สิ่งที่ฉันทำคือการเรียกใช้ฟังก์ชั่นต่อไปนี้แทนการเรียกตัวตรวจสอบความถูกต้องresetForm()โดยตรง:function resetForm(form_id) { $(form_id).find(".form-group").removeClass("has-error"); $(form_id).data('validator').resetForm(); }
Adrian Lopez

ฉันไม่รู้ว่าทำไมรหัสไม่ทำงานบนแบบฟอร์มของฉัน :(
Alyssa Reyes

มันทำงานได้อย่างมีเสน่ห์! ขอบคุณมาก !!! คุณช่วยให้ฉันบันทึกการวิจัยได้หนึ่งหรือสองชั่วโมง
racl101

1
หากคุณมีปุ่มตัวเลือกเช่น Bootstrap แนะนำ (สัญญาณวิทยุที่อยู่ในแท็กป้ายกำกับ) คุณจะต้องเพิ่มสิ่งนี้ในกรณีที่บล็อค:else if (element.prop('type') === 'radio') { error.insertBefore(element.parent().parent()); }
Elliot Cameron

86

เข้ากันได้เต็มรูปแบบกับเงินทุน 3 ผมเพิ่มการสนับสนุนสำหรับการป้อนข้อมูลกลุ่ม , วิทยุและช่องทำเครื่องหมายที่ขาดหายไปในการแก้ปัญหาอื่น ๆ

อัปเดต 10/20/2560 : ตรวจสอบคำแนะนำของคำตอบอื่น ๆ และเพิ่มการสนับสนุนเพิ่มเติมสำหรับมาร์กอัปแบบพิเศษของวิทยุอินไลน์ , การจัดวางข้อผิดพลาดที่ดีขึ้นสำหรับกลุ่มของวิทยุหรือช่องทำเครื่องหมายและเพิ่มการสนับสนุนสำหรับ.ชั้นเพื่อป้องกันการตรวจสอบของการควบคุม หวังว่านี่จะช่วยและขอขอบคุณสำหรับคำแนะนำ

หลังจากรวมปลั๊กอินการตรวจสอบความถูกต้องแล้วให้เพิ่มการเรียกต่อไปนี้:

$.validator.setDefaults({
    errorElement: "span",
    errorClass: "help-block",
    highlight: function (element, errorClass, validClass) {
        // Only validation controls
        if (!$(element).hasClass('novalidation')) {
            $(element).closest('.form-group').removeClass('has-success').addClass('has-error');
        }
    },
    unhighlight: function (element, errorClass, validClass) {
        // Only validation controls
        if (!$(element).hasClass('novalidation')) {
            $(element).closest('.form-group').removeClass('has-error').addClass('has-success');
        }
    },
    errorPlacement: function (error, element) {
        if (element.parent('.input-group').length) {
            error.insertAfter(element.parent());
        }
        else if (element.prop('type') === 'radio' && element.parent('.radio-inline').length) {
            error.insertAfter(element.parent().parent());
        }
        else if (element.prop('type') === 'checkbox' || element.prop('type') === 'radio') {
            error.appendTo(element.parent().parent());
        }
        else {
            error.insertAfter(element);
        }
    }
});

สิ่งนี้ใช้ได้กับคลาสฟอร์ม Bootstrap 3 ทั้งหมด หากคุณใช้รูปแบบแนวนอนคุณต้องใช้มาร์กอัปต่อไปนี้ เพื่อให้แน่ใจว่านี้ช่วยเหลือบล็อกข้อความเคารพรัฐตรวจสอบ ( "มีข้อผิดพลาด" ... ) ของรูปแบบกลุ่ม

<div class="form-group">
    <div class="col-lg-12">
        <div class="checkbox">
            <label id="LabelConfirm" for="CheckBoxConfirm">
                <input type="checkbox" name="CheckBoxConfirm" id="CheckBoxConfirm" required="required" />
                I have read all the information 
            </label>
        </div>
    </div>
</div>

1
errorClass: "help-block error-help-block"ฉันเอ็นดู ฉันใช้. ช่วยบล็อกสำหรับข้อมูลความช่วยเหลือทั่วไปและนี่เป็นการเขียนทับด้วยข้อความยืนยันแบบฟอร์ม การเพิ่มคลาสที่สองทำให้มันไม่เหมือนใครดังนั้นตอนนี้มันจึงเพิ่มแทนที่จะเขียนทับข้อความช่วยเหลือ "จริง" ของฉัน
Scott Stafford

วิธีการแบบไฮไลต์ที่ไม่ได้เรียกว่า
Vlado Pandžić

สวัสดี Vlado คุณช่วยให้ข้อมูลเพิ่มเติมได้ไหมทำไมมันไม่ทำงานสำหรับคุณ
Andreas Krohn

สำหรับปุ่มตัวเลือกกลุ่มนี้จะเพิ่มข้อความแสดงข้อผิดพลาดด้านล่างตัวเลือกแรกซึ่งดูแปลก ๆ คุณอาจต้องการปรับแต่งสิ่งนี้เพื่อรักษาปุ่มตัวเลือกที่แตกต่างกัน
Elliot Cameron

ขอบคุณมาก Mister @AndreasKrohn ^ _ ^
Jeancarlo Fontalvo

23

ฉันใช้แบบฟอร์มที่ออกแบบมาเฉพาะกับ Twitter Bootstrap 3 ฉันตั้งค่าฟังก์ชั่นเริ่มต้นสำหรับ validor และเรียกใช้วิธีการตรวจสอบความถูกต้องกับกฎเท่านั้น ฉันใช้ไอคอนจาก FontAweSome แต่คุณสามารถใช้ Glyphicons ในตัวอย่าง doc

ป้อนคำอธิบายรูปภาพที่นี่

jQuery.validator.setDefaults({
    highlight: function (element, errorClass, validClass) {
        if (element.type === "radio") {
            this.findByName(element.name).addClass(errorClass).removeClass(validClass);
        } else {
            $(element).closest('.form-group').removeClass('has-success has-feedback').addClass('has-error has-feedback');
            $(element).closest('.form-group').find('i.fa').remove();
            $(element).closest('.form-group').append('<i class="fa fa-exclamation fa-lg form-control-feedback"></i>');
        }
    },
    unhighlight: function (element, errorClass, validClass) {
        if (element.type === "radio") {
            this.findByName(element.name).removeClass(errorClass).addClass(validClass);
        } else {
            $(element).closest('.form-group').removeClass('has-error has-feedback').addClass('has-success has-feedback');
            $(element).closest('.form-group').find('i.fa').remove();
            $(element).closest('.form-group').append('<i class="fa fa-check fa-lg form-control-feedback"></i>');
        }
    }
});

เสร็จสิ้น หลังจากเรียกใช้ฟังก์ชันตรวจสอบความถูกต้อง:

$("#default-register-user").validate({
    rules: {
        'login': {
            required: true,
            minlength: 5,
            maxlength: 20
        },
        'email': {
            required: true,
            email: true,
            minlength: 5,
            maxlength: 100
        },
        'password': {
            required: true,
            minlength: 6,
            maxlength: 25
        },
        'confirmpassword': {
            required: true,
            minlength: 5,
            maxlength: 25,
            equalTo: "#password"
        }
    }
});

ตัวอย่าง JSFiddle


1
จะดีจะมี JSFiddle สำหรับการนี้
kofifus

คุณช่วยโพสต์ HTML ที่คุณใช้สำหรับสกรีนช็อตได้ไหม ตัวอย่างซอไม่ได้มีข้อผิดพลาดสไตล์สีแดงหรือไอคอน ขอบคุณ!
Christopher Francisco

Christopher Francisco ฉันอัปเดตตัวอย่าง JSFiddle และเพิ่มตัวอักษร css ที่ยอดเยี่ยม
DARK_DIESEL

สวัสดีทางออกที่ดี! คุณจะแก้ไขสิ่งนี้อย่างไรเพื่อให้เฉพาะเขตข้อมูลที่มีกฎแสดงข้อความสำเร็จหรือล้มเหลว รหัสของคุณถูกต้องทำให้ฟิลด์ทั้งหมดแสดง css ไม่ว่าจะมีกฎหรือไม่ก็ตาม
Michael Smith

ทางออกคือการเพิ่ม: 'ละเว้น: ".ignore,: hidden" "ด้านบนของกฎ จากนั้นเพียงเพิ่มคลาส 'ละเว้น' ในฟิลด์ทั้งหมดที่คุณไม่ต้องการให้มีการตรวจสอบความถูกต้อง
Michael Smith

10

การเพิ่มคำตอบลงบน Miguel Borges ด้านบนคุณสามารถให้คำติชมเกี่ยวกับความสำเร็จสีเขียวแก่ผู้ใช้ด้วยการเพิ่มบรรทัดต่อไปนี้ในบล็อกโค้ดไฮไลต์ / ไม่สว่าง

    highlight: function(element) {
        $(element).closest('.form-group').removeClass('has-success').addClass('has-error');
    },
    unhighlight: function(element) {
        $(element).closest('.form-group').removeClass('has-error').addClass('has-success');
    }

8

นี่เป็นวิธีการแก้ปัญหาที่คุณต้องการคุณสามารถใช้errorPlacementวิธีการแทนที่ตำแหน่งที่จะวางข้อความแสดงข้อผิดพลาด

$('form').validate({
    rules: {
        firstname: {
            minlength: 3,
            maxlength: 15,
            required: true
        },
        lastname: {
            minlength: 3,
            maxlength: 15,
            required: true
        }
    },
    errorPlacement: function(error, element) {
        error.insertAfter('.form-group'); //So i putted it after the .form-group so it will not include to your append/prepend group.
    }, 
    highlight: function(element) {
        $(element).closest('.form-group').addClass('has-error');
    },
    unhighlight: function(element) {
        $(element).closest('.form-group').removeClass('has-error');
    }
});

มันใช้งานได้สำหรับฉันเหมือนเวทมนตร์ ไชโย


error.insertAfter('.form-group');ใส่ข้อผิดพลาดใน. form กลุ่มทั้งหมด แต่มันแสดงให้ฉันเห็นความคิด ขอบคุณ
Miguel Borges

5

สำหรับ bootstrap 4 ใช้ได้ดีกับฉัน

    $.validator.setDefaults({
    highlight: function(element) {
        $(element).closest('.form-group').find(".form-control:first").addClass('is-invalid');
    },
    unhighlight: function(element) {
        $(element).closest('.form-group').find(".form-control:first").removeClass('is-invalid');
        $(element).closest('.form-group').find(".form-control:first").addClass('is-valid');

    },
    errorElement: 'span',
    errorClass: 'invalid-feedback',
    errorPlacement: function(error, element) {
        if(element.parent('.input-group').length) {
            error.insertAfter(element.parent());
        } else {
            error.insertAfter(element);
        }
    }
});

หวังว่ามันจะช่วย!


มันใช้งานได้ดีมาก! สิ่งเดียวที่ฉันเพิ่มคือvalidClass: 'valid-feedback'
Simon Zyx

ขอบคุณสิ่งนี้ใช้ได้กับฉันสำหรับ Bootstrap 4 กับ validClass: 'valid-feedback'
Zaki Mohammed

4

นี่คือสิ่งที่ฉันใช้เมื่อเพิ่มการตรวจสอบความถูกต้องให้กับฟอร์ม:

// Adding validation to form.
        $(form).validate({
            rules: {
                title: {
                    required: true,
                    minlength: 3,
                },
                server: {
                    ipAddress: true,
                    required: true
                }   
            },
            highlight: function(element) {
                $(element).closest('.form-group').removeClass('has-success').addClass('has-error');
            },
            success: function(element) {
                $(element).closest('.form-group').removeClass('has-error').addClass('has-success');
            },
            errorClass: 'help-block'
        });

สิ่งนี้ใช้ได้กับฉันสำหรับการใส่สไตล์ Bootstrap 3 เมื่อใช้ไลบรารีการตรวจสอบ jquery


3

ฉันใช้สิ่งนี้กับวิทยุ:

    if (element.prop("type") === "checkbox" || element.prop("type") === "radio") {
        error.appendTo(element.parent().parent());
    }
    else if (element.parent(".input-group").length) {
        error.insertAfter(element.parent());
    }
    else {
        error.insertAfter(element);
    }

วิธีนี้แสดงข้อผิดพลาดภายใต้ตัวเลือกวิทยุล่าสุด


คำตอบที่เรียบง่ายอย่างยอดเยี่ยมขอบคุณ - เพียงแค่ตัดประโยคประเภทพิเศษลงในตรรกะข้อผิดพลาดที่มีอยู่ของฉันที่มีอยู่
theotherdy

3

ฉันรู้ว่าคำถามนี้มีไว้สำหรับ Bootstrap 3 แต่เนื่องจากมีบางคำถามที่เกี่ยวข้องกับ Bootstrap 4 ถูกเปลี่ยนเส้นทางไปที่คำถามนี้ซึ่งซ้ำซ้อนนี่เป็นตัวอย่างข้อมูล Bootstrap 4 ที่เข้ากันได้:

$.validator.setDefaults({
    highlight: function(element) {
        $(element).closest('.form-group').addClass('has-danger');
    },
    unhighlight: function(element) {
        $(element).closest('.form-group').removeClass('has-danger');
    },
    errorElement: 'small',
    errorClass: 'form-control-feedback d-block',
    errorPlacement: function(error, element) {
        if(element.parent('.input-group').length) {
            error.insertAfter(element.parent());
        } else if(element.prop('type') === 'checkbox') {
            error.appendTo(element.parent().parent().parent());
        } else if(element.prop('type') === 'radio') {
            error.appendTo(element.parent().parent().parent());
        } else {
            error.insertAfter(element);
        }
    },
});

ข้อแตกต่างเล็กน้อยคือ:

  • การใช้คลาสhas-dangerแทนhas-error
  • ข้อผิดพลาดที่ดีกว่าการวางตำแหน่งวิทยุและช่องทำเครื่องหมาย

Bootstrap 4 ไม่มีแล้ว .has-*คลาสgetbootstrap.com/docs/4.3/migration/#forms-1
Fred

2

สำหรับ bootstrap 4 beta เป็นการเปลี่ยนแปลงครั้งใหญ่ระหว่างอัลฟ่าและเบต้าของ bootstrap (และ bootstrap 3), esp. เกี่ยวกับการตรวจสอบแบบฟอร์ม

ก่อนอื่นการวางไอคอนอย่างถูกต้องคุณจะต้องเพิ่มสไตล์ซึ่งเท่ากับสิ่งที่อยู่ใน bootstrap 3 และไม่ต้องใช้ bootstrap 4 beta อีกต่อไป ... นี่คือสิ่งที่ฉันใช้

.fa.valid-feedback,
.fa.invalid-feedback {
    position: absolute;
    right: 25px;
    margin-top: -50px;
    z-index: 2;
    display: block;
    pointer-events: none;
}

.fa.valid-feedback {
    margin-top: -28px;
}

คลาสมีการเปลี่ยนแปลงเช่นกันเนื่องจากเบต้าใช้ 'สถานะ' ของการควบคุมมากกว่าคลาสที่รหัสที่คุณโพสต์ไม่แสดงดังนั้นรหัสข้างต้นของคุณอาจไม่ทำงาน อย่างไรก็ตามคุณจะต้องเพิ่มคลาส 'ที่ผ่านการตรวจสอบแล้ว' ในแบบฟอร์มไม่ว่าจะสำเร็จหรือไฮไลต์ / ไม่รับสาย

$(element).closest('form').addClass('was-validated');

ฉันขอแนะนำให้ใช้องค์ประกอบและคลาสใหม่สำหรับข้อความช่วยเหลือในการควบคุมฟอร์ม

errorElement: 'small',
errorClass: 'form-text invalid-feedback',

1

สิ่งนี้ประกอบไปด้วยทุ่งนา

 $("#form_questionario").validate({
                debug: false,
                errorElement: "span",
                errorClass: "help-block",
                highlight: function (element, errorClass, validClass) {
                    $(element).closest('.form-group').addClass('has-error');
                },
                unhighlight: function (element, errorClass, validClass) {
                    $(element).closest('.form-group').removeClass('has-error');
                },
                errorPlacement: function (error, element) {
                    if (element.parent('.input-group').length || element.prop('type') === 'checkbox' || element.prop('type') === 'radio') {
                        error.insertBefore(element.parent());
                    } else {
                        error.insertAfter(element);
                    }
                },
                // Specify the validation rules
                rules: {
                        'campo1[]': 'required',
                        'campo2[]': 'required',
                        'campo3[]': 'required',
                        'campo4[]': 'required',
                        'campo5[]': 'required'
                        },

                submitHandler: function (form) {
                    form.submit();
                }
            });

1

เพิ่มการแก้ไขด้วยคลื่นวิทยุในhttps://stackoverflow.com/a/18754780/966181

$.validator.setDefaults({
    highlight: function(element) {
        $(element).closest('.form-group').addClass('has-error');
    },
    unhighlight: function(element) {
        $(element).closest('.form-group').removeClass('has-error');
    },
    errorElement: 'span',
    errorClass: 'help-block',
    errorPlacement: function(error, element) {
        if(element.parent('.input-group').length) {
            error.insertAfter(element.parent());
        } else if (element.parent('.radio-inline').length) {
            error.insertAfter(element.parent().parent());
        } else {
            error.insertAfter(element);
        }
    }
});

มันง่ายมีประโยชน์มาก ขอบคุณ.
Chofoteddy

0

คำตอบของ DARK_DIESEL นั้นใช้ได้ดีสำหรับฉัน นี่คือรหัสสำหรับทุกคนที่ต้องการเทียบเท่าโดยใช้ glyphicons:

jQuery.validator.setDefaults({
    highlight: function (element, errorClass, validClass) {
        if (element.type === "radio") {
            this.findByName(element.name).addClass(errorClass).removeClass(validClass);
        } else {
            $(element).closest('.form-group').removeClass('has-success has-feedback').addClass('has-error has-feedback');
            $(element).closest('.form-group').find('span.glyphicon').remove();
            $(element).closest('.form-group').append('<span class="glyphicon glyphicon-remove form-control-feedback" aria-hidden="true"></span>');
        }
    },
    unhighlight: function (element, errorClass, validClass) {
        if (element.type === "radio") {
            this.findByName(element.name).removeClass(errorClass).addClass(validClass);
        } else {
            $(element).closest('.form-group').removeClass('has-error has-feedback').addClass('has-success has-feedback');
            $(element).closest('.form-group').find('span.glyphicon').remove();
            $(element).closest('.form-group').append('<span class="glyphicon glyphicon-ok form-control-feedback" aria-hidden="true"></span>');
        }
    }
});

0

ลองใช้รหัสตัวอย่างนี้ การใช้ปลั๊กอินตรวจสอบความถูกต้อง Jquery และวิธีการเพิ่มเติม นี่คือรหัสที่ใช้งานได้สำหรับโครงการของฉัน หวังว่านี่จะช่วยคุณได้

//jquery validation booking page
	
	// Wait for the DOM to be ready
$(function() {
  // Initialize form validation on the registration form.
  // It has the name attribute "registration"
  $("form[name='book']").validate({
	  //on key up validation
	  onkeyup: function(element) {
      $(element).valid(); 
    },  
    // Specify validation rules
    rules: {
      // The key name on the left side is the name attribute
      // of an input field. Validation rules are defined
      // on the right side
      fname: {
        required: true,
        lettersonly: true
        },
      lname:{
        required: true,
        lettersonly: true
        },
      email: {
        required: true,
        // Specify that email should be validated
        // by the built-in "email" rule
        email: true
      },
      password: {
        required: true,
        minlength: 5
      }
    },
    // Specify validation error messages
    messages: {
      fname: {
      required:"Please enter your firstname",
      lettersonly:"Letters allowed only"
      },
      lname: {
      required:"Please enter your lastname",
      lettersonly:"Letters allowed only"
      },
      email: "Please enter a valid email address"
    },
    // Make sure the form is submitted to the destination defined
    // in the "action" attribute of the form when valid
    submitHandler: function(form) {
      form.submit();
    }
  });
});
.error {
  color: red;
  margin-left: 5px;
  font-size:15px;
}
<script src="design/bootstrap-3.3.7-dist/js/jquery.validate.js"></script>
<script src="design/bootstrap-3.3.7-dist/js/additional-methods.js"></script>

<form name="book" id="book" action="" method="post">

    <div class="row form-group">
        <div class="col-md-6 ">
            <label class="" for="fname">First Name</label>
            <input type="text" name="fname" id="fname" class="form-control" placeholder="First Name">
        </div>
        <div class="col-md-6">
            <label class="" for="lname">Last Name</label>
            <input type="text" name="lname" id="lname" class="form-control" placeholder="Last Name">
        </div>
    </div>

    <div class="row form-group">
        <div class="col-md-6 ">
            <label class="" for="date">Date</label>
            <input type="text" id="date" class="form-control datepicker px-2" placeholder="Date of visit">
        </div>
        <div class="col-md-6">
            <label class="" for="email">Email</label>
            <input type="email" name="email" id="email" class="form-control" placeholder="Email">
        </div>
    </div>

    <div class="row form-group">
        <div class="col-md-12">
            <label class="" for="treatment">Service You Want</label>
            <select name="treatment" id="treatment" class="form-control">
                <option value="">Hair Cut</option>
                <option value="">Hair Coloring</option>
                <option value="">Perms and Curls</option>
                <option value="">Hair Conditioning</option>
                <option value="">Manicure</option>
                <option value="">Pedicure</option>
                <option value="">Nails Extension</option>
                <option value="">Nail Design</option>
                <option value="">Waxing Eyebrows</option>
                <option value="">Waxing Hands/Legs</option>
                <option value="">Full Face Waxing</option>
                <option value="">Full Body/Body Parts Wax</option>
            </select>
        </div>
    </div>

    <div class="row form-group">
        <div class="col-md-12">
            <label class="" for="note">Notes</label>
            <textarea name="note" id="note" cols="30" rows="5" class="form-control" placeholder="Write your notes or questions here..."></textarea>
        </div>
    </div>

    <div class="row form-group">
        <div class="col-md-12">
            <center><input type="submit" value="Book Now" class="btn btn-primary btn-lg"></center>
        </div>
    </div>

</form>


-1

ตัวเลือกอื่นคือการวางคอนเทนเนอร์ข้อผิดพลาดนอกกลุ่มแบบฟอร์มของคุณล่วงหน้า เครื่องมือตรวจสอบจะใช้งานได้หากจำเป็น

<div class="form-group">
  <label class="control-label" for="new-task-due-date">When is the task due?</label>
  <div class="input-group date datepicker">
    <input type="text" id="new-task-due-date" class="required form-control date" name="dueDate" />
    <span class="input-group-addon">
      <span class="glyphicon glyphicon-calendar"></span>
    </span>                          
  </div>
  <label for="new-task-due-date" class="has-error control-label" style="display: none;"></label>
</div>
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.