jQuery:使用单选按钮

时间:2017-03-03 17:39:22

标签: jquery if-statement radio-button conditional

我想要实现的目标:

当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>

0 个答案:

没有答案