进行引导验证以根据第一次选择的内容进行选择?

时间:2019-02-08 15:30:05

标签: jquery forms validation bootstrap-4

如果用户未选择任何内容,则我的下拉菜单会带有有效的引导程序验证。但是我想根据用户在第一次选择中的选择来验证不同的(必需)选择。

<select class="custom-select d-block w-100 mb-4" id="case-select" name="case-select" required>
    <option value="">Select case</option>
    <option class="case" value="A">Case 1</option>
    <option class="case" value="B">Case 2</option>
    <option class="case" value="C">Case 3</option>
    <option class="case" value="D">Case 4</option>
    <option class="case" value="E">Case 5</option>
    <option class="case" value="F">Case 6</option>
</select>

我会根据用户的选择显示新的复选框。

$('.cases').hide();
$('#' + $(this).val()).show();

<div class="cases" id="A">
    <select>
        <option>0</option>
        <option>1</option>
        <option>2</option>
    </select>
</div>

<div class="cases" id="B">
    <select>
        <option>3</option>
        <option>4</option>
        <option>5</option>
     </select>
</div>

但是我该如何验证呢?如果用户在第一个下拉列表中选择A,我想验证他们是否从ID为A的div中选择0、1或2(我不在乎3,4 och 5)。 但是,如果他们在第一个复选框中选择了B,我想验证他们是否从div ID B中选择了3、4或5。

如果用户从第一个下拉列表中选择A。他们需要从div的ID为A的下拉列表中选择内容。

1 个答案:

答案 0 :(得分:1)

使用Bootstrap 4

Different Option Selection on Parent Select

源代码

function disableEachSelectChildren() {
	$(".case").each(function (index, obj) {
		$(this).children("select:first-child").attr("disabled", "");
	});
}

$(document).ready(function () {
	disableEachSelectChildren();

	$("#case-select").change(function () {
		disableEachSelectChildren();
		let selectedCaseValue = $("#case-select").find(":selected").attr("value");
		if (selectedCaseValue) {
			$("#" + selectedCaseValue).children("select:first-child").removeAttr("disabled");
		}
	});
});
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div class="container-fluid bg-light">
	<div class="col-12 my-3 pt-4 pb-2">

		<div class="row">
			<select class="custom-select d-block w-100 mb-2" id="case-select" name="case-select" required>
				<option value="">Select case</option>
				<option class="cases" value="A">Case 1</option>
				<option class="cases" value="B">Case 2</option>
				<option class="cases" value="C">Case 3</option>
				<option class="cases" value="D">Case 4</option>
				<option class="cases" value="E">Case 5</option>
				<option class="cases" value="F">Case 6</option>
			</select>
		</div>

		<div class="row">
			<div class="case col-6 col-lg-2 py-3 text-center" id="A">
				A <select class="w-100 border border-dark">
					<option>0</option>
					<option>1</option>
					<option>2</option>
				</select>
			</div>

			<div class="case col-6 col-lg-2 py-3 text-center" id="B">
				B <select class="w-100 border border-dark">
					<option>3</option>
					<option>4</option>
					<option>5</option>
				</select>
			</div>

			<div class="case col-6 col-lg-2 py-3 text-center" id="C">
				C <select class="w-100 border border-dark">
					<option>6</option>
					<option>7</option>
					<option>8</option>
				</select>
			</div>

			<div class="case col-6 col-lg-2 py-3 text-center" id="D">
				D <select class="w-100 border border-dark">
					<option>9</option>
					<option>10</option>
					<option>11</option>
				</select>
			</div>

			<div class="case col-6 col-lg-2 py-3 text-center" id="E">
				E <select class="w-100 border border-dark">
					<option>12</option>
					<option>13</option>
					<option>14</option>
				</select>
			</div>

			<div class="case col-6 col-lg-2 py-3 text-center" id="F">
				F <select class="w-100 border border-dark">
					<option>15</option>
					<option>16</option>
					<option>17</option>
				</select>
			</div>
		</div>

	</div>
</div>

希望对您有帮助。