ไม่ได้รับข้อความตรวจสอบสำหรับ @Html.DropDownListFor() เมื่อใช้ Chosen jquery

รหัสได้รับด้านล่าง:
หากฉันไม่เลือกค่าใดๆ ในกล่องคำสั่งผสมแล้วกดส่ง ระบบจะไม่ถามข้อความยืนยัน

<tr>
            <td>Department </td>
            <td> : </td>
            <td class="@*@Model.NoEdit*@">    
                @Html.DropDownListFor(m => m.DepartmentId, new SelectList(Model.Departments, "SelectedDepartmentId", "DepartmentCode"), "-- Select Department--", new {@class = "chosen-select", id = "cboDeptartment" })
                @Html.ValidationMessageFor(model => model.DepartmentId)
            </td>

person Joseph    schedule 06.01.2014    source แหล่งที่มา
comment
รหัส jquery อยู่ที่ไหน?   -  person Cris    schedule 06.01.2014
comment
ฉันไม่แน่ใจว่าฉันเข้าใจคุณ Chosen เป็นปลั๊กอิน jquery ซึ่งมีอยู่ในไซต์นี้ harvesthq.github.io/ เลือก   -  person Joseph    schedule 06.01.2014


คำตอบ (3)


ย้ำความคิดเห็นสั้น ๆ ของฉันเป็นคำตอบ :-)

ในการรับข้อความตรวจสอบความถูกต้อง ฉันใช้วิธีการเดียวกันกับที่ Joseph กล่าวถึง แม้ว่าฉันจะใช้คลาส HTML สำหรับการเลือกที่ฉันใช้กับ Chosen ตัวอย่างเช่น:

validator.settings.ignore = ":hidden:not(.select-chosen)";

หากต้องการล้างข้อความตรวจสอบความถูกต้องเมื่อเลือกค่า คุณจะต้องแนบตัวฟังเหตุการณ์สำหรับเหตุการณ์ "เปลี่ยนแปลง" และบังคับให้มีการตรวจสอบความถูกต้องอีกครั้งอย่างชัดเจนของการเลือก ตัวอย่างเช่น สมมติว่าคุณมีตัวแปร select ที่อ้างอิงถึงกล่องตัวเลือก:

select.on("change", function(evt, params) {
    $(evt.target).valid();
});

Chosen จะทริกเกอร์เหตุการณ์ "การเปลี่ยนแปลง" เหล่านั้นทุกครั้งที่มีการเปลี่ยนแปลงค่า

person Mike Brennan    schedule 23.01.2014
comment
ฉันมีปัญหาเดียวกัน ฉันเพิ่ม Validator.settings... บรรทัด แต่ตอนนี้เมื่อฉันคลิกที่ปุ่ม โมเดลของฉันก็ไม่ปรากฏอีกต่อไป - person Chlebta; 14.05.2014

แก้ไขได้หลังจากการค้นคว้ามากมาย...

$(document).ready(function () {
    var validator = $("#Your_form_id").data('validator');
    validator.settings.ignore = ":hidden:not(select)";
});

person Joseph    schedule 07.01.2014
comment
ตอนนี้ใช้งานได้แล้ว แต่ไม่ได้ลบข้อความตรวจสอบเมื่อฉันเลือกค่าในรายการแบบเลื่อนลง มันจะดับลงเมื่อฉันกดปุ่มส่งเท่านั้น - person Joseph; 07.01.2014
comment
โจเซฟ คุณได้แก้ไขปัญหาด้วยการล้างข้อความตรวจสอบความถูกต้องเมื่อเลือกค่าหรือไม่ ฉันกำลังพยายามแก้ไขปัญหานั้นอยู่ตอนนี้ - person Mike Brennan; 22.01.2014
comment
ตกลง พบวิธีแก้ปัญหาแล้ว สมมติว่ากล่องเลือกถูกอ้างอิงโดยตัวแปร select: select.on('change', function(evt, params) { $(evt.target).valid(); }); ซึ่งจะบังคับให้มีการตรวจสอบความถูกต้องของฟิลด์ - person Mike Brennan; 22.01.2014
comment
ขอบคุณ @MikeBrennan ฉันลงเอยด้วยการใช้ bootstrap dropdown แต่คุณช่วยโพสต์มันเป็นคำตอบได้ไหม เพื่อที่ฉันจะได้ทำเครื่องหมายว่าเป็น ans.. อาจช่วยได้ในอนาคต :) - person Joseph; 22.01.2014
comment
@MikeBrennan จะเพิ่มฟังก์ชันเลือกได้ที่ไหน ฉันลองแล้ว $(document).ready(function () { var validator = $("#form").data('validator'); validator.settings.ignore = ":hidden:not(.chosen-select)"; }); select: select.on('change', function (evt, params) { $(evt.target).valid(); }); - person Chlebta; 14.05.2014

ดังนั้นการจัดคำตอบข้างต้นให้ถูกต้อง

 $(function () {
        var validator = $("#Your_form_id").data('validator');
        validator.settings.ignore = ":hidden:not(.chosen-select)";
        $(".chosen-select").chosen();
        $("#Your_dropdown_id").change(function (evt, params) {
            $(evt.target).valid();
        })

    });
person ksg    schedule 03.03.2015