如何使用onChange事件使复选框显示/隐藏文本。

huangapple go评论75阅读模式
英文:

How to make a checkbox show/hide text with onChange event

问题

我正在处理一个复选框,当点击它时会显示一个新的文本框。这只是两个文本框,其中一个是隐藏的。当复选框被选中时,它会显示隐藏的文本框并隐藏已经启用的文本框。

我在使用onChange事件来显示/隐藏,但我只能成功地让它工作一次。由于我刚刚开始使用Javascript,我还没有完全弄清楚如何为同一个复选框制作两个onChange事件。我之所以使用onChange,是因为它对复选框本身有反应,而onClick似乎只对复选框之外的一切有反应。

另一个问题是,我正在使用Wix Corvid来编程,但在复选框上没有得到任何可用的名称或ID。

$w.onReady(function (){ 
  $w('#checkboxGroup1').onChange((event)=> {
    $w('#text108').show();
    $w('#text106').hide();  
  })
});
英文:

I am working on a checkbox that shows a new textbox when clicked. It's just two textboxes where one of them is hidden. When the checkbox is checked it shows the hidden textbox and hides the already enabled textbox.

I am using the onChange event to show/hide, but I can only manage to turn it on once. And since I'm just starting out using Javascript, I haven't really worked out all the variables on how make two onChange events for the same checkbox (*. I am using onChange as it reacts to the checkbox itself, while onClick somehow only react to everything except the checkbox.

Another problem is that I'm using Wix Corvid to program it, and I don't get any functioning name or ID on the checkbox.

$w.onReady(function (){ 
$w('#checkboxGroup1').onChange((event)=> {
$w('#text108').show();
$w('#text106').hide();  
})
});

答案1

得分: 2

Here is the translated content:

<https://jsfiddle.net/x0gon2a9/4/>

`<input type="checkbox" class="checkbox" id="checkbox" value="chckbox1" checked="true"> checkbox1
    <input type="text" id="input-1" value="input-1">
    <input type="text" id="input-2" value="input-2" >`

$( document ).ready(function() {
 if ($("#checkbox").is(":checked")) {
 $("#input-1").hide();
}else {
$("#input-1").show();
}
});

$("#checkbox").click(function(){
if ($("#checkbox").is(":checked")) { 
$("#input-1").hide();
$("#input-2").show();
}else {
$("#input-1").show();
$("#input-2").hide();
}
})
英文:

<https://jsfiddle.net/x0gon2a9/4/>

&lt;input type=&quot;checkbox&quot; class=&quot;checkbox&quot; id=&quot;checkbox&quot; value=&quot;chckbox1&quot; checked=&quot;true&quot;&gt; checkbox1
&lt;input type=&quot;text&quot; id=&quot;input-1&quot; value=&quot;input-1&quot;&gt;
&lt;input type=&quot;text&quot; id=&quot;input-2&quot; value=&quot;input-2&quot; &gt;

 if ($(&quot;#checkbox&quot;).is(&quot;:checked&quot;)) {
 $(&quot;#input-1&quot;).hide();
}else {
$(&quot;#input-1&quot;).show();
}
});

$(&quot;#checkbox&quot;).click(function(){
if ($(&quot;#checkbox&quot;).is(&quot;:checked&quot;)) { 
$(&quot;#input-1&quot;).hide();
$(&quot;#input-2&quot;).show();
}else {
$(&quot;#input-1&quot;).show();
$(&quot;#input-2&quot;).hide();
}
})


</details>



# 答案2
**得分**: 1

你需要首先检查是否已选中:

```javascript
$w.onReady(function (){ 
$w('#checkboxGroup1').change((event)=> {
if($w('#checkboxGroup1').prop('checked') == true)
   $w('#text108').show();
else
   $w('#text106').hide();  
})
});
英文:

You need to check if it's checked or not first:

$w.onReady(function (){ 
$w(&#39;#checkboxGroup1&#39;).change((event)=&gt; {
if($w(&#39;#checkboxGroup1&#39;).prop(&#39;checked&#39;) == true)
   $w(&#39;#text108&#39;).show();
else
   $w(&#39;#text106&#39;).hide();  
})
});

答案3

得分: 0

你可以使用类选择器来在复选框上添加EventListener,并根据复选框的状态来显示或隐藏输入框。以下是纯JavaScript的示例工作代码:

const checkboxes = document.querySelectorAll('.checkbox');
checkboxes.forEach(checkbox => {
    checkbox.addEventListener('change', function() {
        const id = this.dataset.inputId;
        if (this.checked === true) {
            document.getElementById(id).style.display = 'block';
        } else {
            document.getElementById(id).style.display = 'none';
        }
    });
});

同时,这是相关的HTML代码:

<input type="checkbox" class="checkbox" data-input-id="input-1" value="chckbox1"> checkbox1
<input type="text" id="input-1" value="input-1" style="display: none">
<input type="checkbox" class="checkbox" data-input-id="input-2" value="chckbox1"> checkbox2
<input type="text" id="input-2" value="input-2" style="display: none">

以上是翻译好的代码部分。

英文:

You can use class selector to add EventListener on the checkboxs and show hide the input based on that.

Here is the sample working code in vanilla javascript.

<!-- begin snippet: js hide: false console: true babel: false -->

<!-- language: lang-js -->

const checkboxes = document.querySelectorAll(&#39;.checkbox&#39;);
checkboxes.forEach(checkbox =&gt; {

    checkbox.addEventListener(&#39;change&#39;, function() {

        const id = this.dataset.inputId;

        if (this.checked === true) {
            document.getElementById(id).style.display = &#39;block&#39;;
        } else {
            document.getElementById(id).style.display = &#39;none&#39;;
        }
    });
});

<!-- language: lang-html -->

 &lt;input type=&quot;checkbox&quot; class=&quot;checkbox&quot; data-input-id=&quot;input-1&quot; value=&quot;chckbox1&quot;&gt; checkbox1
    &lt;input type=&quot;text&quot; id=&quot;input-1&quot; value=&quot;input-1&quot; style=&quot;display: none&quot;&gt;
    &lt;input type=&quot;checkbox&quot; class=&quot;checkbox&quot; data-input-id=&quot;input-2&quot; value=&quot;chckbox1&quot;&gt; checkbox2
    &lt;input type=&quot;text&quot; id=&quot;input-2&quot; value=&quot;input-2&quot; style=&quot;display: none&quot;&gt;

<!-- end snippet -->

答案4

得分: 0

"Use event.target.checked"

$w.onReady(function () {
  $w('#checkboxGroup1').onChange((event) => {
    if (event.target.checked) {
      $w('#text108').show();
    } else {
      $w('#text106').hide();
    }
  });
});
英文:

Use event.target.checked

$w.onReady(function (){ 
  $w(&#39;#checkboxGroup1&#39;).onChange((event)=&gt; {
    if (event.target.checked) {
       $w(&#39;#text108&#39;).show();
    } else {
      $w(&#39;#text106&#39;).hide();  
    }
  });
});

huangapple
  • 本文由 发表于 2020年1月6日 16:50:03
  • 转载请务必保留本文链接:https://go.coder-hub.com/59609073.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定