我想要实现的目标:
当carRadio没有选择且nameRadio有选择且transmissionRadio有选择时,显示位于<div class="formalertmsg">Please select a car.</div>
否则,隐藏它。
我写了一个名为checkCar的函数,它是IF transmissionRadio被检查AND 未选中carRadio,然后显示消息。否则,该消息将被隐藏。
我设法编写了这个函数,它似乎正常工作。用户在carRadio上选择了一个选项后,我很难理解为什么消息不会消失。
我在代码末尾添加了carRadio.on("change", checkCar);
,以便在用户对carRadio进行更改时触发checkCar函数。但它不起作用。我真的不明白为什么它没有隐藏消息,因为checkCar如果条件不满足(传输transportRadio并且carRadio也被检查,所以else语句应该被触发,但不是出于某种原因)。
同样只是因为它是代码的一部分,当用户对nameRadio进行更改时,如果选中carRadio,carRadio将被重置,而transportRadio选择仍然存在(如果选择了单选按钮)。
有人可以向我解释为什么carRadio.on("change", checkCar);
的表现不符合我的意愿吗?并帮我纠正这一点,而无需从头开始重写我的所有代码?谢谢你,Kim。
这是我的代码:
var nameRadio = $(".radio-838 input") ;
var carRadio = $(".radio-839 input") ;
var transmissionRadio = $(".radio-60 input");
//Reset the Car selection when a change has been made on the Name
function carInit() {
carRadio.prop("checked", false);
}
nameRadio.on("change", carInit);
// Alert msg when no Car is selected and a Transmission is selected
function checkCar (){
if(transmissionRadio.is(":checked") && carRadio.not(":checked")){
$(".formalertmsg").show();
}
else{
$(".formalertmsg").hide();
}
}
nameRadio.on("change", checkCar);
carRadio.on("change", checkCar);
$(window).on('load', checkCar );
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="formel" id="formtde">
<h3>Name</h3>
<p>
<span class="radio-838">
<span class="first">
<label>
<input type="radio" name="radio-838" value="JOHN">
<span>JOHN</span>
</label>
</span>
<span class="last">
<label>
<input type="radio" name="radio-838" value="BOBBY">
<span>BOBBY</span>
</label>
</span>
</span>
</p>
</div>
<div class="formel" id="formgec">
<h3>Car</h3>
<p>
<span class="radio-839">
<span class="first">
<label>
<input type="radio" name="radio-839" value="FORD">
<span>FORD</span>
</label>
</span>
<label>
<input type="radio" name="radio-839" value="CHEVROLET">
<span>CHEVROLET</span>
</label>
<label>
<input type="radio" name="radio-839" value="PORSCHE">
<span>PORSCHE</span>
</label>
<label>
<input type="radio" name="radio-839" value="NISSAN">
<span>NISSAN</span>
</label>
</span>
</p>
<div class="formalertmsg">
Please select a car.
</div>
</div>
<div class="formel">
<h3>Transmission</h3>
<p>
<span class="radio-60">
<span class="first">
<label>
<input type="radio" name="radio-60" value="MANUAL">
<span>MANUAL</span>
</label>
</span>
<span class="last">
<label>
<input type="radio" name="radio-60" value="AUTO">
<span>AUTO</span>
</label>
</span>
</span>
</p>
</div>