使用javascript设置无线电输入的默认值?

使用javascript设置无线电输入的默认值?,javascript,ruby-on-rails,input,Javascript,Ruby On Rails,Input,在rails上的表单中,我有一种类型的无线电输入,如果用户选择“是”或“否”,相应的输入文本将更改其属性。基本上,如果用户选择“是”,他将有一个输入,他将不得不输入一个值,但如果他选择“否”,他将无法更改非默认值的值。除非用户选择“是”并输入一个值,但意识到他们犯了错误并希望选择“否”,否则默认情况下不会重置该值,而他在“是”中输入的值将保留。为什么? 以下是我所做的: <%= f.label :post_author_yes, 'Yes' %> <%= f.r

在rails上的表单中,我有一种类型的无线电输入,如果用户选择“是”或“否”,相应的输入文本将更改其属性。基本上,如果用户选择“是”,他将有一个输入,他将不得不输入一个值,但如果他选择“否”,他将无法更改非默认值的值。除非用户选择“是”并输入一个值,但意识到他们犯了错误并希望选择“否”,否则默认情况下不会重置该值,而他在“是”中输入的值将保留。为什么? 以下是我所做的:

    <%= f.label :post_author_yes, 'Yes' %>
    <%= f.radio_button :author, 'Yes', class: 'radio-inline', onclick:'javascript:yesnoCheck();' %>
    <%= f.label :post_author_no, 'No' %>
    <%= f.radio_button :author, 'No', class: 'radio-inline', onclick:'javascript:yesnoCheck();' %>
    <div id="input" style="display:none">
       <%= f.text_field :author, class: 'edit_input', placeholder: 'Real Author', :readonly => true %>
     </div>

要将字段重置为其初始状态,必须将
输入
元素的
属性设置为空字符串(
'

查看下面的示例,其中行
posauthor.value=''
通过更改
属性来重置
post\u author

const author=document.getElementById('author');
const postAuthor=document.getElementById('post_author');
const radios=document.querySelectorAll('input[name=“post author”]”);
收音机。forEach(收音机=>{
radio.addEventListener('change',函数(事件){
如果(event.target.value==='Yes'){
author.classList.remove('hidden');
}否则{
author.classList.add('hidden');
postAuthor.value='';
}
});
});
。隐藏{
显示:无;
}
Post-Author是
作者号
真正的作者

这是因为您只隐藏字段,而不重置字段。JavaScript不知道当你隐藏一个字段时,你想清空它。那么如何重置它呢?
  function yesnoCheck(){
      if(document.getElementById('post_author_yes').checked)
      {
        document.getElementById('input').style.display = 'block';
        document.getElementById('post_author').readOnly = false;
      }
      else {
        document.getElementById('input').style.display = 'block';
        document.getElementById('post_author').readOnly = true;
        document.getElementById("post_author").setAttribute('value', 'No');
      }
  }