【问题标题】:javascript - How to dynamically change information displayed by radio button?javascript - 如何动态更改单选按钮显示的信息?
【发布时间】:2017-01-21 12:44:47
【问题描述】:

(重复?)我已经尝试了几个与此相关的 Stackoverflow 帖子,但我无法让 javaScript 示例正常工作。我想暂时避免使用 jQuery

我想使用 javascript 创建单选按钮动态显示的信息。在这个例子中,我想编写一个函数来显示这些单选按钮“Answer 1”和“Answer 2”的一些其他值。 例如,我实际上并不想要“答案 1”。目标是让用户点击多项选择答案之一,然后点击提交/保存以自查自己的知识。

我已经通过我更复杂的项目代码了解到,硬编码到 html <form> 部分的提交/保存按钮似乎与单选按钮显示的值没有关联,我设法做到了使用 javaScript 添加 * 在我看来,更改硬编码信息 已经由单选按钮显示 可能可以工作。

当用户点击提交/“保存”按钮时,我不需要参考单选按钮显示的实际答案信息。我只需要知道,在这种情况下,它是选择的第一个答案还是第二个答案。

<html>

<script type="text/javascript">
function OnSubmitForm()

{
  if(document.myform.operation[0].checked == true)
    {
    alert ( "You have selected the first answer" );  
    }
  else
    if(document.myform.operation[1].checked == true)
        {
        alert ( "You have selected the SECOND answer" );  
        }

}
</script>
<form name="myform" onsubmit="return OnSubmitForm();">
   <input type="radio" name="operation" value="1" checked>Answer 1
   <input type="radio" name="operation" value="2">Answer 2
   <p>
   <input type="submit" name="submit" value="save">
   </p>
</form>

</html>

(我不知道是否应该包含我尝试过的以下示例)

顺便说一句,这是我尝试过的另一个示例 - 一个帖子,但我无法让这个想法发挥作用。我试图让第一个单选按钮显示“垃圾”而不是最初硬编码的“Answer1”。但是我从发布中借用的代码中有一个错误,我无法解决。

来自 Javascript how to change radio button label text?

    <html>
    <form name="myform" onsubmit="return OnSubmitForm();">
       <input type="radio" id = 'first'  name="operation" value="1" checked <label for="alsoFirst"> Answer 1
       <input type="radio" id = 'second'  name="operation" value="2"<label for="alsoSecond">Answer 2

       <p>
       <input type="submit" name="submit" value="save">
       </p>
    </form>



    <script type="text/javascript">
     document.addEventListener('readystatechange', function() {
      // Seems like a GOOD PRACTICE - keeps me from getting type error I was getting

        // https://stackoverflow.com/questions/14207922/javascript-error-null-is-not-an-object

        if (document.readyState === "complete") {
          init();
        }
      });

     function init() {

        console.log ("expect to change -Answer 1- displayed by first button to word junk");


         // this works
        var label = document.getElementById('first').getElementsByTagName('alsoFirst') [0];
        // this does not work
        label.innerHTML = 'junk';
        }

    //http://www.javascript-coder.com/html-form/html-form-action.phtml
    function OnSubmitForm()
    {
      if(document.myform.operation[0].checked == true)
        {
        alert ( "You have selected the first answer" );  
        }
      else
        if(document.myform.operation[1].checked == true)
            {
            alert ( "You have selected the SECOND answer" );  
            }

        if (document.uniqueName.checked == true){
            alert ( "You have selected the THIRD answer" );  
            }

    }

    /*
    <input type="radio" name="sex" id="male" value="male">
            <label for="male">Male</label>
      </input>

    var input = document.getElementById('male');
    var label = input.getElementsByTagName('label')[0];
    label.innerHTML = 'New Text';

    */
    //https://stackoverflow.com/questions/32292962/javascript-how-to-change-radio-button-label-text
    </script>




    </html>
  • 我之前通过插入表格行和连接字符串从我的数组中获取了要显示的值。这有效,并进入表格,但没有绑定到硬编码为原始&lt;form&gt; 的提交/保存按钮。我仍然计划在表格中设置单选应答按钮,但我试图在这里做一个更基本的示例。

【问题讨论】:

  • getElementsByTagName 需要标签名称,而不是“alsoFirst”,应该是 getElementsByTagName("label")
  • 我希望没关系,在我的第一个示例中,我没有包括我尝试重置的所有不同字段,使用来自帖子和示例的各种想法。根据我尝试的不同方式,它们都没有奏效!
  • 我将其更改为 .... var label = document.getElementById('first').getElementsByTagName('label') [0];.... 但我仍然收到错误消息。谢谢

标签: javascript html forms dynamic radio-button


【解决方案1】:

我已经对通过 document.getElementByTagName() 获取标签进行了一些修改,并对 OnSubmitForm() 函数进行了一些更改。只需将您的代码粘贴到下面的这些更改和最后的演示链接。

 <html>
<form name="myform" onsubmit="OnSubmitForm();">
   <input type="radio" id = 'first'  name="operation" value="1"
          checked> <label for="alsoFirst"> Answer 1 </label>
   <input type="radio" id = 'second'  name="operation" value="2">
  <label for="alsoSecond">Answer 2</label>

   <p>
   <input type="submit" name="submit" value="save">
   </p>
</form>



<script type="text/javascript">
 document.addEventListener('readystatechange', function() {
  // Seems like a GOOD PRACTICE - keeps me from getting type error I was getting

    // http://stackoverflow.com/questions/14207922/javascript-error-null-is-not-an-object

    if (document.readyState === "complete") {
      init();
    }
  });

 function init() {

    console.log ("expect to change -Answer 1- displayed by first button to word junk");


     // this works
    var label = document.getElementsByTagName('label') [0];
    // this does not work
    label.innerHTML = 'junk';
    }

//http://www.javascript-coder.com/html-form/html-form-action.phtml
function OnSubmitForm()
{
  if(document.getElementById('first').checked == true)
    {
    alert ( "You have selected the first answer" );  
    }
  else
    if(document.getElementById('second').checked == true)
        {
        alert ( "You have selected the SECOND answer" );  
        }

  return false;
}

/*
<input type="radio" name="sex" id="male" value="male">
        <label for="male">Male</label>
  </input>

var input = document.getElementById('male');
var label = input.getElementsByTagName('label')[0];
label.innerHTML = 'New Text';

*/
//http://stackoverflow.com/questions/32292962/javascript-how-to-change-radio-button-label-text
</script>




</html>

演示:https://jsbin.com/sojojiy/27/edit?html,console,output

希望这会有所帮助。谢谢!

【讨论】:

  • 谢谢你,克里希!这很有帮助。
  • 欢迎您! @LaurelS
  • 我把你钉在了我的 JavaScript pinterest 板上,并把钉子放到了 Facebook 上!你不仅速度很快,而且很善良!你从来没有说过——哎呀,这是一个如此基本的东西,你怎么不知道呢!! -我希望他们在你工作的地方欣赏你!!!
  • 非常感谢! @LaurelS 。你的赞美给了我很大的动力,肯定会帮助很多人。爱你哥们!
猜你喜欢
  • 2012-07-15
  • 2019-01-16
  • 2016-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-25
相关资源
最近更新 更多