Kry*_*hey 1 javascript checkbox jquery
我有2个按钮和2个输入."买"按钮只应在检查两个输入时触发其默认功能.如果没有,它应该用红色边框标记它们.我在这做错了什么?
jQuery(function($) {
$('.checkedterms:checked').length == $('.checkedterms').length
$("#upsellyes").click(function(e) {
$(".checkedterms").change(function(){
if (!$('.checkedterms:checked').length == $('.checkedterms').length) {
e.preventDefault();
$("#terms-required").addClass('invalid');
}
else {
$("#terms-required").removeClass('invalid');
}
});
});
});Run Code Online (Sandbox Code Playgroud)
.invalid {
border: 1px solid red;
}Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="terms-required">
<input type="checkbox" class="checkedterms" name="terms" id="terms" style="position: absolute;"><label for="terms" class="checkbox" style="display: inline-block!important;font-weight:normal!important;margin-left: 25px;">I have read <a href="#" >Allgemeinen Geschäftsbedingungen</a>.<span class="required">*</span></label><br />
<input type="checkbox" class="checkedterms" name="terms" id="terms" style="position: absolute;"><label for="terms" class="checkbox" style="display: inline-block!important;font-weight:normal!important;margin-left: 25px;">I have read <a href="#" >Widerrufsbelehrung</a>.<span class="required">*</span></label><br />
</div><br>
<a href="#" id="upsellyes">buy</a><br><br>
<a href="#">no thanks</a>Run Code Online (Sandbox Code Playgroud)
这里有几个问题:
change处理程序的复选框上嵌套了处理click程序; 去掉它.id属性.它们需要在DOM中是唯一的.您还可以通过缓存复选框选择器并使用来使逻辑更简洁toggleClass().像这样的东西:
jQuery(function($) {
$("#upsellyes").click(function(e) {
var $terms = $('.checkedterms');
$("#terms-required").toggleClass('invalid', $terms.length != $terms.filter(':checked').length);
});
});Run Code Online (Sandbox Code Playgroud)
.invalid {
border: 1px solid red;
}
.checkedterms {
position: absolute;
}
label {
display: inline-block!important;
font-weight: normal!important;
margin-left: 25px;
}Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="terms-required">
<input type="checkbox" class="checkedterms" name="terms" />
<label for="terms" class="checkbox">
I have read <a href="#">Allgemeinen Geschäftsbedingungen</a>.
<span class="required">*</span>
</label><br />
<input type="checkbox" class="checkedterms" name="terms" />
<label for="terms" class="checkbox">
I have read <a href="#" >Widerrufsbelehrung</a>.
<span class="required">*</span>
</label><br />
</div><br />
<a href="#" id="upsellyes">buy</a><br><br>
<a href="#">no thanks</a>Run Code Online (Sandbox Code Playgroud)
最后请注意使用单独的样式表.内联样式是一个坏主意,应尽可能避免.
| 归档时间: |
|
| 查看次数: |
50 次 |
| 最近记录: |