Javascript -如果没有选中单选按钮,选中第一个

Javascript - If no radio buttons are selected, check the first one

本文关键字:第一个 单选按钮 Javascript 如果没有      更新时间:2023-09-26

我是JavaScript的初学者。我有几个单选按钮在我的动态页面,我想创建一个脚本,使以下内容:

HTML:

    <input type="radio" id="elemainfoto">
    <input type="radio" id="elemainfoto">
    <input type="radio" id="elemainfoto">
JavaScript:

    var radio = '#elemainfoto',
    if(radd.value == 0) {
        radd.checked the first radio element,
    } else {
        keep the way it is,
    }

如果没有标记任何单选元素,则标记第一个必填项

如果你的期望是默认情况下选择第一项,那么你应该使用HTML而不是javascript,请注意,你不应该使用两个具有相同id的HTML元素,在你的情况下,你应该用一个类和/或为元素添加唯一的id来替换。

<input type="radio" class="elemainfoto" id="item1" checked>
<input type="radio" class="elemainfoto" id="item2">
<input type="radio" class="elemainfoto" id="item3>

根据RobG的评论更新了答案

在纯JS中这样做(我将id更改为类id应该是唯一的):

var radio = document.querySelectorAll('.elemainfoto'),
    checked = false;
for (var i = 0; i < radio.length; i++) {
    if (radio[i].checked) {
        checked = true;
        break;
    }
}
if (!checked) {
    radio[0].checked = true;
}
else {
    alert('something is checked')
}

用jQuery缩短一点:

var $radio = $('.elemainfoto');
if (!$radio.filter(':checked').length) {
    $radio[0].checked = true;
}
else {
    alert('something is checked')
}

在HTML中多次使用相同值的" id "属性是无效的,你应该使用"name"作为输入。

HTML:

<input type="radio" name="elementinfoto" value="1" />
<input type="radio" name="elementinfoto" value="2" />
<input type="radio" name="elementinfoto" value="3" />
JavaScript:

 var radio = document.getElementsByName('elementinfoto'); // get all radio buttons
 var isChecked = 0; // default is 0 
 for(var i=0; i<radio.length;i++) { // go over all the radio buttons with name 'elementinfoto'
   if(radio[i].checked) isChecked = 1; // if one of them is checked - tell me
 }
 if(isChecked == 0) // if the default value stayed the same, check the first radio button
   radio[0].checked = "checked";

示例:http://jsfiddle.net/yxm4N/2/

通过赋予单选按钮相同的名称来形成单选按钮组。ID是可选的,通常不是必需的。如果提供了ID,则每个ID应该有不同的值。这些按钮应该有一个值,这样它们的存在才有意义。

要默认选中一个按钮,只需设置所选按钮的checked属性:

<form id="foo">
  <input type="radio" name="elemainfoto" valu="0" checked>0<br>
  <input type="radio" name="elemainfoto" valu="1">1<br>
  <input type="radio" name="elemainfoto" valu="2">2<br>
  <input type="reset">
</form>

现在,如果没有选择其他按钮,或表单被重置,一个按钮将被选中。注意,如果没有将一个按钮设置为默认选中,那么一旦用户选中了一个按钮,取消选中它的唯一方法就是在同一组中选择另一个单选按钮,或者使用重置按钮(如果提供的话)。

如果您想在脚本中设置默认的选中按钮,有几个选项。一个是:

var buttons = document.getElementsByName('elemainfoto');
buttons[0].defaultChecked = true;

如果您确实想要检查是否选中了一个,请在表单中添加如下按钮:

  <input type="button" value="Check buttons" onclick="checkButtons(this);">

那么checkButtons函数可以是:

function checkButtons(el) {
  var buttons;
  var form = el && el.form;
  if (form) {
    buttons = form.elemainfoto;
    for (var i=0, iLen=buttons.length; i<iLen; i++) {
      // If a button is checked, return its value
      if (buttons[i].checked) {
        return buttons[i].value;
      }
    }
  }
  // Otherwise, try to check the first one and return undefined
  buttons && buttons[0].checked;
}

你需要知道如何使用无线电元素。Id在html页面中是唯一的。您应该为每个无线电元素分配相同的名称。

<input type="radio" name="elemainfoto" id="first" value="1" />
element 1
<input type="radio" name="elemainfoto" id="second" value="2" />
element 2
<input type="radio" name="elemainfotor" id="thrid" value="3" /> 
element 3

如果你想检查第一个单选按钮为默认值,在输入标签属性中设置它

<input type="radio" name="elemainfoto" id="first" value="1" checked="true"/>
    element 1

或者你也可以用javascript,

$("input:radio[name=elemainfoto]:first").attr('checked', true);

您可以对每个单选按钮单击执行操作,以了解选中了哪个项

$(function(){
  $('input[type="radio"]').click(function(){
    if ($(this).is(':checked'))
    {
      alert($(this).val());
    }
  });
});

如果您想为每个单选按钮执行单独的操作,请尝试下面的代码

$(function () {
    $('input[type="radio"]').click(function () {
        if ($(this).is(':checked')) {
            if ($(this).val() == '1') alert('first radio element is checked');
            if ($(this).val() == '2') alert('second radio element is checked');
            if ($(this).val() == '3') alert('third radio element is checked');
        }
    });
});

查看这个小提琴演示

我不选择第一个,而是使用null

const radio = document.querySelectorAll('.timescale');
let timescale;
if (radio.checked) {
  timescale = $('input[name=timescale_radio_buttons]:checked').val()
} else timescale = null;

你可以用更少的代码像这样写

<input type="radio" name="elementinfoto" value="1" />
<input type="radio" name="elementinfoto" value="2" />
<input type="radio" name="elementinfoto" value="3" />
JavaScript

const fields = document.getElementsByName('elementinfoto');
const value = fields.filter(el => el.checked).shift()?.value || null;
if(!value) {
   fields.shift().checked = true;
}

如果您喜欢

,则可以将函数shift()替换为[0]以获得第一个元素