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