2017-04-16 42 views
0

我有2個複選框。我需要一個,而不是兩個,但至少1要檢查。這不是多選,但不接受零。如果選中了一個,則該行將起作用jQuery('#wiz_menu.nav-tabs > .active').next('li').find('a').trigger('click');否則應該警告。以下使得它始終處於警示狀態。如何檢查要檢查的複選框?

我沒有使用提交按鈕或者我會用validate plugin UPDATE。這是一個正常的按鈕<button type="button" class="btnNext">Next step</button>

HTML

<div class="form-group"> 
    <label for="usp-category-8" class="usp-checkbox usp-cat usp-cat-0"> 
     <input type="checkbox" name="usp-category[]" id="usp-category-8" value="8" data-required="true" class="usp-input usp-input-category"> 
     Cultura 
    </label> 
    <label for="usp-category-7" class="usp-checkbox usp-cat usp-cat-0"> 
     <input type="checkbox" name="usp-category[]" id="usp-category-7" value="7" data-required="true" class="usp-input usp-input-category"> 
     Scienze 
    </label> 
    <input type="hidden" name="usp-category-required" value="1"> 
</div> 

JS

jQuery('.btnNext').on("click", function(){ 
    if(jQuery(".tab-pane").is("#step1")) { 
    var isChecked = false; 
    $('input[type=checkbox]').on("change", function() { 
     isChecked = true; 
    }); 
    if (isChecked) { 
     jQuery('#wiz_menu.nav-tabs > .active').next('li').find('a').trigger('click'); 
    } else { 
     alert('Please, check at least one checkbox!'); 
    } 
    } 
}); 
+0

可能重複:http://stackoverflow.com/q/2204250/80836 – Andreas

+1

設置爲true變化將取消選中,即使它設置爲true。但是,如果它根本沒有工作,請嘗試使用點擊(雖然邏輯仍然是錯誤的)。 – inarilo

+2

爲什麼你不能讓他們單選按鈕? – JJJ

回答

2

去旁邊嚮導使用jQuery你可以使用is

$('#form').on('submit', function(e) { 
 
    e.preventDefault(); 
 
    if ($('input[name="hi"]').is(':checked')) { 
 
    console.log('checked'); 
 
    } 
 
}); 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form id="form"> 
 
    <input type="checkbox" name="hi" value="hi">Hallo<br> 
 
    <input type="checkbox" name="gb" value="gb">Tschuss<br> 
 
    <input type="submit" value="Submit"> 
 
</form>

適應您的代碼:

$('.btnNext').click(function(e) { 
 
\t e.preventDefault(); 
 
    if ($('#usp-category-7').is(':checked') || $('#usp-category-8').is(':checked')) { 
 
    console.log('at least one is checked'); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="form-group"> 
 
    <label for="usp-category-8" class="usp-checkbox usp-cat usp-cat-0"> 
 
     <input type="checkbox" name="usp-category[]" id="usp-category-8" value="8" data-required="true" class="usp-input usp-input-category"> 
 
     Cultura 
 
    </label> 
 
    <label for="usp-category-7" class="usp-checkbox usp-cat usp-cat-0"> 
 
     <input type="checkbox" name="usp-category[]" id="usp-category-7" value="7" data-required="true" class="usp-input usp-input-category"> 
 
     Scienze 
 
    </label> 
 
    <input type="hidden" name="usp-category-required" value="1"> 
 
    <button class="btnNext">Next</button> 
 
</div>

+1

它不是一個提交按鈕,否則我會使用驗證插件,這是一個正常的按鈕,然後轉到嚮導 –

+0

它意味着如何使用'is' @RobertoMarras的示例。 – inarilo

+0

好的謝謝,我接受這個,因爲它是正確的,但我已經發布了我自己的答案也爲我的情況下采取的解決方案。 –

1

多虧了評論,我個人解決它像這樣,使他們單選按鈕。但我會接受其他答案,因爲它是正確的。

jQuery('.btnNext').on("click", function(){ 
    if(jQuery(".tab-pane").is("#step1")) { 
    if($('input[type=radio').is(':checked')) { 
     jQuery('#wiz_menu.nav-tabs > .active').next('li').find('a').trigger('click'); 
    } else { 
     alert('Please, check at least one checkbox!'); 
    } 
    } 
});