2014-06-21 33 views
0

如何防止複選框被選中(不使用disable)?防止在點擊後檢查複選框

我試圖

function nocheck() { 
    if(somevar.value>3){ 
     alert("Not allowed"); 
     document.getElementById('mybox').checked = false;   
    } 
}; 

<input type="checkbox" name="mybox" id="mybox" value="test" onclick="nocheck();" /> 

但這樣的複選框仍然得到警報消息後檢查彈出。

編輯: 感謝評論/答案,我能夠接近解決方案,但還沒有解決問題 - 這個代碼有什麼問題? http://jsfiddle.net/9kS8E/1/

HTML

JS

var user = { premium : false }; 
function nocheck() { 
    if(!user.premium){        
    return false; 
    } else { 
    return true; 
    }; 
}; 
+0

,如果你不想讓一個複選框進行檢查,那麼你應該使用'殘疾人='中的複選框disabled''屬性。 – Vignesh

+0

每個用戶都應該能夠檢查它,但只有高級用戶應該保留'checked'狀態。對於其他人,複選框應該再次取消選中。 – SPi

+0

同意OP問題,這個問題是geniune –

回答

0

(1)保存複選框的值在變量[而 「點擊」 複選框的值將得到改變]

(2)檢查用戶類型,

  • 如果不是高級用戶,則切換複選框的值。

  • 否則沒有必要通過切換來改變複選框

(*)的值:複選框已被選取與否,我們是不允許普通用戶進行檢查。

小提琴:http://jsfiddle.net/aslancods/rQG3r/

 <input type="checkbox" name="mybox" id="mybox" value="test" onclick="noCheck(event)" /> 

     var user = { premium : true }; 
     function nocheck(elem) { 
      var newValue = elem.checked; 
      if(!user.premium) {        
     alert("not allowed"); 
      elem.checked = !newValue;// toggle value 
      } else { 
      alert(" allowed "); 
      } 
     }; 
+0

這很接近並按預期工作,但我希望能夠取消選中複選框,而不管用戶是否爲高級用戶。您的示例在檢查和取消選中之間沒有區別。 – SPi

3

我想我不明白你的問題,但我認爲你正在尋找此,

<input type="checkbox" name="mybox" id="mybox" value="test" onclick="return false;" /> 

HTML

<input type="checkbox" name="mybox" id="mybox" value="test" onclick="nocheck()" /> 

JS

function nocheck() { 
    if(somevar.value>3){ 
     alert("Not allowed"); 
     return false; 
    }else 
     return true; 
}; 
+0

我們可以使用event.preventDefault(),但這是一個很好的方法。返回假 – Vignesh

+1

使事情更清楚,'if'語句並不總是正確 – SPi

+0

但整個事情是錯誤的。如果我們不想允許檢查複選框,那麼禁用它是正確的事情,我認爲 – Vignesh

-1

你的代碼也應該工作。 警報後它沒有被檢查。 您可以在取消選中之後說出提醒。

if(somevar.value>3){ document.getElementById('mybox').checked = false; alert("Not allowed"); }