0

I'm currently trying to use the following code within a form on my website

<p class="formtag">Minimum Price: </p>
<input type="number" style="width: 50px; margin-right: 15px;" name="minprice" id="minprice">
<p class="formtag">Maximum Price: </p>
<input type="number" style="width: 50px; margin-right: 15px;" name="maxprice" id="maxprice">


<p class="formtag">Show Only Free Resources </p>
<input type="checkbox" id="freecheck" onchange="disableprice()" name="freecheck" value="freeonly">

Combined with the following JavaScript

function disableprice() {
    if(document.getElementById('freecheck').checked = "true") {
        document.getElementById('minprice').value = "";
        document.getElementById('minprice').disabled = "disabled";
        document.getElementById('maxprice').value = "";
        document.getElementById('maxprice').disabled = "disabled";
    }

    else {
        document.getElementById('minprice').disabled = "false";
        document.getElementById('maxprice').disabled = "false";
    }

}

The idea is that if the checkbox is checked, the input fields for the maximum and minimum price are disabled, otherwise they should be editable.

The issue I am having is that once the checkbox has been checked by the user, it cannot be unchecked. I'm currently struggling to work out why this is, but I'm beginning to suspect that it has something to do with my use of the code document.getElementById('freecheck').checked = "true".

Can anyone please advise me on how to fix this issue?

John Smith
  • 359
  • 3
  • 13

4 Answers4

2

You're assigning the value "true" to checked, and then checking its value, so it always will be true:

if(document.getElementById('freecheck').checked = "true") {

This is an assign, it should be a comparison with 2 equal signs. Also, as stated by @DavidThomas the checked attribute is boolean so you should check for boolean true value:

if(document.getElementById('freecheck').checked == true) {

or

if(document.getElementById('freecheck').checked) {
gontrollez
  • 6,372
  • 2
  • 28
  • 36
0
if(document.getElementById("freecheck").checked = true){

//do something

}

ref: How do I uncheck a checkbox?

Community
  • 1
  • 1
Srijan
  • 1
0

okay here is the solution you were looking for

here is your checkbox new code

<input type="checkbox" id="freecheck" onclick="myonclickhandler(this);" name="freecheck" value="freeonly">

While this is your javasript code

<script type="text/javascript">
var t = document.getElementById("freecheck");

function myonclickhandler(t) {
    if (t.checked) {
        document.getElementById('minprice').value = "";
        document.getElementById('minprice').disabled = "disabled";
        document.getElementById('maxprice').value = "";
        document.getElementById('maxprice').disabled = "disabled";
    }
    else {
        document.getElementById('minprice').disabled = "false";
        document.getElementById('maxprice').disabled = "false";
    }
}
</script>

Hope this helps

0

Do like following , It will work :

Change your javascript function

function disableprice() {
    if(document.getElementById('freecheck').checked) {
        document.getElementById('minprice').value = "";
        document.getElementById('minprice').disabled = true;
        document.getElementById('maxprice').value = "";
        document.getElementById('maxprice').disabled = true;
    }

    else {
        document.getElementById('minprice').disabled = false;
        document.getElementById('maxprice').disabled = false;
    }

}

Also find working fiddle Fiddle

Mandeep Singh
  • 1,287
  • 14
  • 34
  • Does this answer add something to mine? You don't explain what the problem was and the solution is the same. – gontrollez Sep 03 '16 at 14:15
  • can't you see the diff b/w document.getElementById('freecheck').checked and document.getElementById('freecheck').checked == 'true' ?? – Mandeep Singh Sep 03 '16 at 14:17