Jquery大师,我一直在为此而奋斗。我正在构建一个表单呈现系统的客户端表单验证层,它输出这样的标记(最小例子):
<form name="someName" action="someAction">
<label for="1">Product</label>
<select id="1" name="1">
<option value="">Please Select</option>
<option value="shoe">Shoe</option>
<option value="hat">Hat</option>
<option value="vest">Vest</option>
</select>
<!-- this fieldset would be enabled if select (id:1) IS NOT blank -->
<fieldset data-dep-values="" data-dep-operator="!=" data-dep-id="1" class="dependant">
<label for="2">Brand</label>
<input type="text" id="2" name="2" class="required">
</fieldset>
<!-- this fieldset would be enabled if select (id:1) IS blank -->
<fieldset data-dep-values="" data-dep-operator="=" data-dep-id="1" class="dependant">
<label for="3">Other Product</label>
<textarea id="3" name="3" class="required"></textarea>
</fieldset>
<!-- this fieldset would be enabled if select (id:1) equals "shoe" OR "vest" -->
<fieldset data-dep-values="shoe|vest" data-dep-operator="=" data-dep-id="1" class="dependant">
<label for="4">Material</label>
<textarea id="4" name="4" class="required"></textarea>
</fieldset>
<input type="submit">
</form>
示例中需要注意的一些事项:
这是我的问题/问题。
我认为它会像这样运行:
$('.dependant[data-dep-id="idOfChangedInput"]')
然后测试条件。如果为true,则显示依赖项并在验证规则中包含任何子项“必需”字段。同时隐藏和禁用任何以前启用的依赖项(如果不再满足条件)这是一个具有思维错误后果的逻辑难题。
我必须相信有一个相当基本的方法来设置这个规则,但我尝试的一切都失败了。
非常感谢任何见解或建议。
干杯!
答案 0 :(得分:0)
使用默认属性为每个字段集设置id。 假设第一个字段集
<fieldset id="fs1" disabled="true"
表示第二个字段集
<fieldset id="fs2"
表示第三个字段集
<fieldset id="fs3" disabled="true"
你必须编写最有可能的JS函数。
function enableDisableFS() {
var value = $("#1").val();
if (value != "") {
$("#fs1").removeProp("disabled");
$("#fs2").prop("disabled", true);
if (value == 'shoe' || value == 'vest') {
$("#fs3").removeProp("disabled");
} else {
$("#fs3").prop("disabled", true);
}
} else {
$("#fs2").removeProp("disabled");
}
}
并将onchange()attrubute添加到您的选择
<select id="1" name="1" onchange="enableDisableFS()">
如果要在提交时验证表单,请编写另一个JS函数。
function validate() {
// if else validate do here depending on your conditions.
if (valid) {
document.forms[0].submit;
} else {
alert('Validation failed');
}
return false;
}
您的提交按钮
<input type="button" onclick="return validate()">