วิธีใช้แอตทริบิวต์“ ต้องมี” กับฟิลด์อินพุต“ วิทยุ”


409

ฉันแค่สงสัยว่าจะใช้คุณลักษณะการป้อนข้อมูล HTML5 ใหม่ "ต้อง" ในวิธีที่ถูกต้องในปุ่มตัวเลือก ฟิลด์ตัวเลือกทุกปุ่มต้องการแอททริบิวต์ด้านล่างหรือไม่ก็เพียงพอหากมีเพียงฟิลด์เดียวเท่านั้นที่ได้รับ

<input type="radio" name="color" value="black" required="required" />
<input type="radio" name="color" value="white" required="required" />

คำตอบ:


692

TL; DR: ตั้งค่าแอrequiredททริบิวอย่างน้อยหนึ่งอินพุตของกลุ่มวิทยุ


การตั้งค่าrequiredสำหรับอินพุตทั้งหมดนั้นมีความชัดเจนมากขึ้น แต่ไม่จำเป็น (เว้นแต่จะสร้างปุ่มตัวเลือกแบบไดนามิก)

ในการจัดกลุ่มปุ่มตัวเลือกทั้งหมดจะต้องมีnameค่าเหมือนกัน อนุญาตให้เลือกได้ครั้งละหนึ่งรายการเท่านั้นและใช้ได้requiredกับทั้งกลุ่ม

<form>
  Select Gender:<br>

  <label>
    <input type="radio" name="gender" value="male" required>
    Male
  </label><br>

  <label>
    <input type="radio" name="gender" value="female">
    Female
  </label><br>

  <label>
    <input type="radio" name="gender" value="other">
    Other
  </label><br>

  <input type="submit">
</form>

รับทราบด้วย:

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

แหล่ง


1
@kumar_harsh: ช่องทำเครื่องหมายใด ๆ ที่ทำเครื่องหมายตามที่ต้องการจะต้องตรวจสอบ ในทำนองเดียวกันการทำเครื่องหมายในช่องที่จำเป็นต้องไม่มีผลกับช่องทำเครื่องหมายอื่น ๆ (ชื่อเดียวกันหรือไม่) ไม่มีมาร์กอัพแบบง่าย ๆ เพื่อระบุว่า "ของช่องทำเครื่องหมาย x เหล่านี้ด้วยชื่อเดียวกัน" ต้องมีการตรวจสอบอย่างน้อยหนึ่งรายการ
แบรดเคนต์

3
@Davdriver ใช่คุณสามารถระบุได้ที่ปุ่มตัวเลือกหากคุณต้องการ ในความเป็นจริง w3c wrote: เพื่อหลีกเลี่ยงความสับสนว่ากลุ่มปุ่มถูกต้องหรือไม่ผู้เขียนได้รับการสนับสนุนเพื่อระบุคุณลักษณะในทุกปุ่มในกลุ่ม (ดูw3.org/TR/html5/forms.html#the-required-attributeภายใต้ตัวอย่างรหัส )
Seybsen

1
Sry แต่ต่อไปนี้เป็นพวงของเงินฝาก: โดยทั่วไปผู้เขียนได้รับการสนับสนุนเพื่อหลีกเลี่ยงการมีกลุ่มปุ่มตัวเลือกที่ไม่ได้มีการควบคุมการตรวจสอบเริ่มแรกในสถานที่แรกเนื่องจากเป็นรัฐที่ผู้ใช้ไม่สามารถกลับไปและ โดยทั่วไปถือว่าเป็นส่วนต่อประสานผู้ใช้ที่ไม่ดี ทำไม? เนื่องจากไม่มีการควบคุมที่ถูกตรวจสอบเบื้องต้นเป็นกรณีที่ถูกต้อง (UX)
PussInBoots

2
ฉันต้องการเพิ่มในบางกรณีปุ่มตัวเลือกที่ไม่มีสถานะ "ตรวจสอบ" เริ่มต้นเป็นสิ่งที่ดีมากและ UX ที่ดี ในกรณีของฉันผู้ใช้จะต้องจัดประเภทวัตถุบางอย่างตามรายการกึ่งยาวของคำตอบใช่ / ไม่ การหาคำตอบสำหรับคำถามเหล่านี้ผิดจะส่งผลเสียต่อตรรกะปลายน้ำ ดังนั้นฉันไม่สามารถเริ่มต้นคำตอบเป็นใช่หรือไม่ใช่เพราะมันจะแตกต่างกันไปสำหรับแต่ละวัตถุที่ผู้ใช้กำลังจำแนก เป็นไปได้ที่พวกเขาจะพลาดที่จำเป็นต้องเปลี่ยนและป้อนข้อมูลที่ไม่ถูกต้องลงในฐานข้อมูล หรืองานถูกขัดจังหวะและไม่แน่ใจว่าพวกเขาทิ้งไว้ที่ไหน
Joel Wigton

1
@Seybsen Nah "โดยทั่วไป" ไม่ได้ครอบคลุมถึงเรื่องนี้ว่าไม่แน่นอน แต่หน่วยงานมาตรฐานเหล่านี้ไม่เคยให้ตัวอย่างว่าเมื่อใดจริง ๆ แล้วมันจะเป็นอินเทอร์เฟซผู้ใช้ที่ไม่ดีพอที่จะใช้คำแนะนำของพวกเขาดังนั้นฉันจึงต้องการเสนอ มันทำให้ดูเหมือนถ้าคุณใช้คุณไม่ได้คิด UX ของคุณ ฉันต้องการให้นักพัฒนาซอฟต์แวร์รายอื่นมีความมั่นใจในการตัดสินใจเลือกการออกแบบอย่างชาญฉลาด - ไม่ใช่เพียงแค่การเริ่มต้นปุ่มทุกปุ่ม
Joel Wigton

4

คุณสามารถใช้ข้อมูลโค้ดนี้ ...

<html>
  <body>
     <form>
          <input type="radio" name="color" value="black" required />
          <input type="radio" name="color" value="white" />
          <input type="submit" value="Submit" />
    </form>
  </body>
</html>

ระบุคำหลัก "ที่จำเป็น " ในหนึ่งในคำสั่งที่เลือก หากคุณต้องการเปลี่ยนวิธีการเริ่มต้นของการปรากฏตัว คุณสามารถทำตามขั้นตอนเหล่านี้ นี่เป็นเพียงข้อมูลเพิ่มเติมหากคุณมีความตั้งใจที่จะแก้ไขพฤติกรรมเริ่มต้น

เพิ่มสิ่งต่อไปนี้ลงใน.cssไฟล์ของคุณ

/* style all elements with a required attribute */
:required {
  background: red;
}

สำหรับข้อมูลเพิ่มเติมคุณสามารถอ้างอิง URL ต่อไปนี้

https://css-tricks.com/almanac/selectors/r/required/


3

หากปุ่มแบบเรดิโอของคุณได้รับการปรับแต่งเช่นไอคอนดั้งเดิมสำหรับปุ่มเรดิโอนั้นถูกซ่อนไว้ผ่าน css display:noneเพื่อให้คุณสามารถสร้างปุ่มแบบเรดิโอของคุณเองได้จากนั้นคุณอาจจะได้รับข้อผิดพลาด

วิธีแก้ไขคือแทนที่display:noneด้วยopacity:0


ผมคิดว่าคุณหมายความว่า ERRORMESSAGE display:noneเบราว์เซอร์ที่มองไม่เห็นถ้าปุ่มตัวเองจะถูกซ่อนไว้ผ่านทาง ขอบคุณตอบแล้วที่นี่: stackoverflow.com/questions/49687229/…
Seybsen

1

นี่คือการใช้งาน RadioButtons พื้นฐานที่ทันสมัย ​​แต่ทันสมัยพร้อมการตรวจสอบ HTML5 ดั้งเดิม:

body {font-size: 15px; font-family: serif;}
input {
  background: transparent;
  border-radius: 0px;
  border: 1px solid black;
  padding: 5px;
  box-shadow: none!important;
  font-size: 15px; font-family: serif;
}
input[type="submit"] {padding: 5px 10px; margin-top: 5px;}
label {display: block; padding: 0 0 5px 0;}
form > div {margin-bottom: 1em; overflow: auto;}
.hidden {
  opacity: 0; 
  position: absolute; 
  pointer-events: none;
}
.checkboxes label {display: block; float: left;}
input[type="radio"] + span {
  display: block;
  border: 1px solid black;
  border-left: 0;
  padding: 5px 10px;
}
label:first-child input[type="radio"] + span {border-left: 1px solid black;}
input[type="radio"]:checked + span {background: silver;}
<form>

  <div>
    <label for="name">Name (optional)</label>
    <input id="name" type="text" name="name">
  </div>

  <label>Gender</label>
  <div class="checkboxes">
    <label><input id="male" type="radio" name="gender" value="male" class="hidden" required><span>Male</span></label>
    <label><input id="female" type="radio" name="gender" value="male" class="hidden" required><span>Female </span></label>
    <label><input id="other" type="radio" name="gender" value="other" class="hidden" required><span>Other</span></label>
  </div>

  <input type="submit" value="Send" />

</form>

แม้ว่าฉันจะเป็นแฟนตัวยงของวิธีการที่เรียบง่ายของการใช้การตรวจสอบ HTML5 ดั้งเดิม แต่คุณอาจต้องการแทนที่ด้วยการตรวจสอบ Javascript ในระยะยาว การตรวจสอบความถูกต้องของจาวาสคริปต์ช่วยให้คุณสามารถควบคุมกระบวนการตรวจสอบได้มากขึ้นและช่วยให้คุณตั้งค่าคลาสจริง (แทนที่จะเป็นคลาสหลอก) เพื่อปรับปรุงสไตล์ของฟิลด์ (ใน) ที่ถูกต้อง การตรวจสอบความถูกต้องของ HTML5 ดั้งเดิมสามารถเป็นทางเลือกของคุณในกรณีที่ Javascript ใช้งานไม่ได้ (หรือขาด) คุณสามารถค้นหาตัวอย่างของที่นี่พร้อมกับคำแนะนำอื่น ๆ บางอย่างเกี่ยวกับวิธีที่จะทำให้รูปแบบที่ดีขึ้น , แรงบันดาลใจจากแอนดรูโคล


0

ฉันต้องใช้required="required"พร้อมกับชื่อและประเภทเดียวกันกว่าการตรวจสอบทำงานได้ดี

input type="radio" name="userradio"  id="" value="User" required="required"

input type="radio" name="userradio" id="" value="Admin" 

input type="radio" name="userradio" id="" value="Guest" 

1
มันจะช่วยถ้าคุณจัดรูปแบบคำตอบของคุณและให้คำอธิบายว่าทำไมมันทำงาน
Joe Lissner

1
ตกลง w @JoeLissner โปรดจัดรูปแบบรหัสของคุณโดยใช้เครื่องมือที่มีให้
sao
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.