2015-10-20 114 views
2

我試圖檢查用戶是否至少選擇了一個單選按鈕。當點擊名爲mallname的複選框時,我需要檢查是否有一個付款收件箱已被檢查。Javascript檢查是否選擇了一個單選按鈕

這裏是我的支付HTML(我需要檢查,如果這兩個中的一個被選中)

<fieldset> 
<legend>Payment method</legend> 
<div class='container'> 
<label for='payment' >Please select payment method.:</label> 
<p> 
<label for='payment' >Once off (Full Payment):</label> 
<input type='radio' name='payment' id='paymentoo' onClick="SetHTML2('once')" value="Once off (Full Payment)" required <?php echo($isOnceoffFullPayment?'checked="checked"':''); ?> maxlength="50" /> 
<span id='register_payment_errorloc' class='error'></span> 
<label for='payment' >Monthly Debit:</label> 
<input type='radio' name='payment' id='paymentmd' onClick="SetHTML2('montly')" value="Monthly Debit" required <?php echo($isMonthlyDebit?'checked="checked"':''); ?> maxlength="50" /> 
<span id='register_payment_errorloc' class='error'></span> 
<br> 
</div> 
</fieldset> 

HTML的複選框

<td width='400'><label for='contract' >$malls</label></td><td width='100'><input type='checkbox' name='mallname[]' id='mallname' value='$malls' onclick = 'checkpayment(); addemupfull(); addemupfulldebit();'/></td> 

這裏是我的Java

<script type="text/javascript"> 
function checkpayment(){ 
var payoo = document.getElementById("paymentoo"); 
var paymd = document.getElementById("paymentmd"); 
if(!(payoo || paymd).checked){ 
var malchecks = document.getElementById("mallname"); 
malchecks.checked = false; 
alert("Please select a payment method first"); 
} 
} 
</script> 

選擇'paymentoo'時有效,但選擇'paymentmd'時我仍然收到提示「請選擇付款方式OD第一」

回答

3

!(payoo || paymd).checked將只檢查payoo是否被選中的邏輯或運算符將返回第一個truthy值 - 因爲payoo是DOM元素,它將始終返回

你需要檢查

if (!payoo.checked && !paymd.checked) {// if (!(payoo.checked || paymd.checked)) { 
    var malchecks = document.getElementById("mallname"); 
    malchecks.checked = false; 
    alert("Please select a payment method first"); 
} 
+0

感謝。很好的工作 –

2

您的問題與此聲明(payoo || paymd) - 因爲payoo將始終存在,您正在檢查的是您是否檢查payoo。你需要的是:

if(!(payoo.checked || paymd.checked))) 

或者,更快的方式可以是:

if(document.querySelectorAll('#paymentoo:checked, #paymentmd:checked').length) 
+0

謝謝。很好的答案。我只能提供1個答案。我會公平的,並且滿足第一個答案。這兩個答案幫了我很多。 –

+0

其實你可以同時提出兩個答案;)無論如何,其他答案對'||'操作符有更好的描述,因此無論如何我都會選擇那個。祝你好運! – somethinghere

相關問題