jQuery Mobile: กลุ่มควบคุมแนวตั้งสองหรือสามคอลัมน์ของปุ่มตัวเลือก

ฉันทำงานกับ jQuery Mobile เมื่อเร็ว ๆ นี้และเริ่มมีข้อจำกัดหลายประการ ซึ่งส่วนใหญ่ฉันสามารถแก้ไขได้โดยใช้การจัดการ jQuery/Javascript/CSS บางประเภท เราใช้ iPad จำนวนมาก ซึ่งช่วยให้มีความกว้างมากกว่าโทรศัพท์ทั่วไปของคุณ กลุ่มอินพุตบางกลุ่มบนหน้าเว็บของเรามีแนวโน้มที่จะดูดีขึ้นในรูปแบบสองคอลัมน์ เมื่อเป็นไปได้.

ตัวอย่างคือรายการปุ่มตัวเลือกแบบยาว มันดูแย่ในคอลัมน์เดียวเท่านั้น เราต้องการแสดงรายการปุ่มตัวเลือกใน 2 หรือ 3 คอลัมน์ แทนที่จะเป็นรูปแบบ 1 คอลัมน์ทั่วไปที่คุณได้รับจาก "กลุ่มควบคุม" "แนวตั้ง" เดียว ดูกลุ่มควบคุมแนวตั้งในหน้าสาธิตนี้:

http://demos.jquerymobile.com/1.4.5/checkboxradio-radio/#Verticalgroup

ด้วยช่องทำเครื่องหมาย ฉันได้ทำสิ่งนี้สำเร็จโดยการสร้างกลุ่มควบคุมที่แตกต่างกันสองหรือสามกลุ่ม จากนั้นวางลงในตาราง 3 คอลัมน์ ใช้งานได้ดีกับช่องทำเครื่องหมาย แต่ฉันไม่แน่ใจว่าจะทำอย่างไรกับปุ่มตัวเลือก มีความคิดอะไรบ้าง?

ฉันคิดว่าฉันสามารถสร้างกลุ่มควบคุมแนวตั้งอินพุตวิทยุที่แตกต่างกันได้สามกลุ่ม (เคียงข้างกัน) จากนั้นจัดการ CSS เพื่อให้ดูเหมือนว่ามีกลุ่มเดียว ฉันจะต้องจัดการอินพุตที่ซ่อนอยู่สำหรับวิทยุที่เลือกจริง


person jjwdesign    schedule 29.02.2016    source แหล่งที่มา
comment
โดยส่วนตัวแล้ว ฉันพบว่าการใช้ bootstrap เพื่อออกแบบสำหรับอุปกรณ์เคลื่อนที่เป็นงานที่น่าพอใจมากกว่ามาก   -  person Wesley Smith    schedule 29.02.2016
comment
เข้าใจแล้ว. น่าเสียดายที่ฉันติดอยู่กับ jQuery Mobile สำหรับโปรเจ็กต์นี้   -  person jjwdesign    schedule 02.03.2016
comment
คุณสามารถสร้าง jsFiddle เพื่อแสดงสิ่งที่คุณทำกับช่องทำเครื่องหมายได้หรือไม่   -  person Wesley Smith    schedule 02.03.2016
comment
อาจไม่ใช่คำถามที่ดีที่สุดสำหรับ SO   -  person jjwdesign    schedule 02.03.2016


คำตอบ (1)


ฉันตัดสินใจสร้างสองคอลัมน์สำหรับแหล่งที่มาทางการตลาด ขวาและซ้าย. ชื่อคือ "marketing_source_left" และ "marketing_source_right" ฉันเติมกลุ่มควบคุมแนวตั้งวิทยุสองกลุ่มแล้วใช้ jQuery เพื่อเปลี่ยนทั้งสองกลุ่มให้มีคุณสมบัติ "ชื่อ" เป็นเพียง "marketing_source"

// Define current marketing_source value and remove hidden field
var marketing_source = $('#marketing_form #marketing_source').val(); // hidden field
$('#marketing_form #marketing_source').val(marketing_source).remove();

// Change all marketing source radios (left and right sides)
// to have property name="marketing_source"
$("#marketing_form input:radio[name='marketing_source_left']").prop('name', 'marketing_source').prop('checked', false);
$("#marketing_form input:radio[name='marketing_source_right']").prop('name', 'marketing_source').prop('checked', false);

// Set the radio to checked for the marketing source value
$('#marketing_form input[type="radio"]:checked').prop('checked', false); // Uncheck current
$('#marketing_form input:radio[name="marketing_source"]').filter('[value="'+marketing_source+'"]').prop('checked', true);
$('#marketing_form input:radio[name="marketing_source"]').checkboxradio('refresh');

CSS ที่ใช้เป็นสิ่งที่คล้ายกับสิ่งนี้

#marketing_right_div, #marketing_left_div {
    display: inline-block !important;
    width: 314px !important;
    text-align: top;
    vertical-align: top;
}
person jjwdesign    schedule 02.03.2016