新手:检查表单初始化时是否选中了单选按钮.这个代码是什么意思

Newbie: Checking to see if radio button is checked on form initialization. What does this code mean?

本文关键字:单选按钮 代码 意思 是什么 检查表 检查 表单 初始化 是否 新手      更新时间:2023-09-26

我是javascript新手。我正在尝试构建一个复杂的表单,同时学习JS和JQ。。。这不是一项容易的任务。这段代码有效,但我不知道这两行代码的作用,所以我想在这里问一下。

这个代码的作用是循环遍历一个数组,查看单选按钮复选框是否被选中为是或否。当用户重新访问他/她正在填写的表单时,它会在初始化时运行。该代码附加到一个文本字段元素,如果myRadioButton为yes,则取消隐藏,如果为no,则保持隐藏。

我不知道第5行和第6行做什么(从第二个if语句开始(。一些知识渊博的人会不会像在教程中那样,好心地把这些台词转录成几句话?我真的很感激!

var rbVal = "";
var rbBtn =  JQuery("[name='"myRadioButton[]'"]");
for (var i = 0; i < rbBtn.length; i++)
 if (rbBtn[i].checked) {
  if (rbVal != "") rbVal += ",";
   rbVal += rbBtn[i].value;
 }
if( rbVal != "yes" ){
  doSomething;
  } 
 else {
  doSomethingElse;
  }

该代码正在检查共享名称为myRadioButton[]的所有单选按钮,以确保如果选中某个单选按钮,则其值将添加到用逗号分隔的rbVal字符串中。

var rbBtn = JQuery("[name='"myRadioButton[]'"]");<-获取一组单选按钮

for (var i = 0; i < rbBtn.length; i++)<-循环遍历该数组中的每个按钮。

if (rbBtn[i].checked) {<-如果选择了按钮,则检查是否已经设置了CCD_ 6<--要么你在这里遗漏了什么,要么它是错误的程序

第5行将rbVal的值与空字符串(""(进行比较。如果rbVal不等于(!=(一个空字符串,则在rbVal后面附加一个包含逗号字符的字符串。例如,如果rbVal包含字符串"hello",那么在执行该行之后,它将包含"hello,"。

第6行将rbBtn[i].value的值附加到rbValrbBtn是一个类似数组的对象(事实上,它看起来是jQuery的一个实例,包含选择器匹配的内容(,当您使用类似数组语法访问jQuery对象时,您会得到实际的DOM元素,而不是另一个jQuery对象,因此value属性是DOM元素的实际value属性(从外观上看,这将是一个单选按钮(。

所以,如果你有一个这样的单选按钮:

<input type="radio" value="someVal">

则循环将产生CCD_ 19。

如果你有两个单选按钮:

<input type="radio" value="someVal">
<input type="radio" value="anotherVal">

那么你最终会得到CCD_ 20。您可以从中看出该循环的总体目的是什么——构建一个由jQuery选择器匹配的所有单选按钮的值组成的逗号分隔字符串。

奇怪的是,这是使用jQuery来获取单选按钮和一些普通的JavaScript来查看是否检查了返回的单选按钮。

  • CCD_ 21使用空字符串CCD_。

  • CCD_ 23从被称为CCD_ 24的文档中获取所有元素。

  • for (var i = 0; i < rbBtn.length; i++)循环通过每个返回的元素(可能有不止一个,因为myRadioButton[]是一个单选按钮阵列,因此[]在末尾(。i是返回元素数组中的当前索引。

  • if (rbBtn[i].checked)查看单选按钮是否为"选中"(如果您愿意,则为"打开"(。

  • rbVal += rbBtn[i].value;:如果选中了当前单选按钮(记住,for()在所有单选按钮中循环(,则获取它的value属性,并将其附加(添加到(当前rbVal中的任何内容。例如,如果rbVal包含Hello,并且单选按钮的值为world,则rbVal最终将包含Hello world

  • if( rbVal != "yes" )如果rbVal中的值不等于(!=(yes,则我们调用doSomething函数。

  • 如果rbVal确实包含yes,那么我们需要调用doSomethingElse函数:

    else {
        doSomethingElse;
    }