jQuery 验证 - 从 select 获取值并根据该值在必填字段中输入文本
jQuery Validate - Get value from select and based on the value make text input required field
我有一个带有 select 的表格,其中有 3 个选项 "Blank"、"Yes" 和 "No"。我还有一个文本输入,这是这种情况的一部分。
我的HTML如下(摘录):
<div class="row">
<div class="col-sm-4 col-md-4">
<select class="form-control" id="medical" name="medical" onchange=" if(this.value == 'medyes') { document.getElementById('medcon-text').style.display = 'block'; } else { document.getElementById('medcon-text').style.display = 'none';} ">
<option value="Select an option"></option>
<option value="medyes">Yes</option>
<option value="medno">No</option>
</select>
</div>
<!--close medical select-->
</div>
<div class="row">
<div class="col-sm-12 col-md-12">
<div id="medcon-text" style="display:none;">
<label class="control-label">If so please specify:</label>
<input type="text" class="form-control" id="medicaltext" name="medicaltext" placeholder="Enter your disability or medical condition">
</div>
</div>
<!--close medical condition-->
</div>
<!--close row-->
jQuery 验证代码(摘录):
$("#online-application").validate({
rules: {
medical: {
required: true
},
medcon: {
required: $("#medical").val() == "medyes"
},
},
messages: {
medical: "Please select an option.",
medicaltext: "Please enter your medical condition.",
},
我的问题是,如何将 select 设置为必填字段,如果 select 值为 "Yes"/"medyes",则将 medicaltext 输入设置为必填场地。但是,如果 select 值为 no 或空白,则不得要求输入医学文本。
您需要使用 function()
即 returns true/false
与 depends
属性.
rules: {
medical: {
required: true
},
medicaltext: { // <- NAME attribute of the input
required: {
depends: function() {
return ($("#medical").val() == "medyes");
}
}
},
},
在 .validate()
方法中,只能使用每个输入元素的 name
属性来分配规则。由于我没有看到任何带有 name="medcon"
的输入,因此需要更改它以匹配文本输入元素上的 name
。
请参阅 depends
的文档:jqueryvalidation.org/validate/#rules
为了 required
在 select
上工作,您还需要更改此行...
<option value="Select an option"></option>
进入这个...
<option value="">Select an option</option>
我有一个带有 select 的表格,其中有 3 个选项 "Blank"、"Yes" 和 "No"。我还有一个文本输入,这是这种情况的一部分。
我的HTML如下(摘录):
<div class="row">
<div class="col-sm-4 col-md-4">
<select class="form-control" id="medical" name="medical" onchange=" if(this.value == 'medyes') { document.getElementById('medcon-text').style.display = 'block'; } else { document.getElementById('medcon-text').style.display = 'none';} ">
<option value="Select an option"></option>
<option value="medyes">Yes</option>
<option value="medno">No</option>
</select>
</div>
<!--close medical select-->
</div>
<div class="row">
<div class="col-sm-12 col-md-12">
<div id="medcon-text" style="display:none;">
<label class="control-label">If so please specify:</label>
<input type="text" class="form-control" id="medicaltext" name="medicaltext" placeholder="Enter your disability or medical condition">
</div>
</div>
<!--close medical condition-->
</div>
<!--close row-->
jQuery 验证代码(摘录):
$("#online-application").validate({
rules: {
medical: {
required: true
},
medcon: {
required: $("#medical").val() == "medyes"
},
},
messages: {
medical: "Please select an option.",
medicaltext: "Please enter your medical condition.",
},
我的问题是,如何将 select 设置为必填字段,如果 select 值为 "Yes"/"medyes",则将 medicaltext 输入设置为必填场地。但是,如果 select 值为 no 或空白,则不得要求输入医学文本。
您需要使用 function()
即 returns true/false
与 depends
属性.
rules: {
medical: {
required: true
},
medicaltext: { // <- NAME attribute of the input
required: {
depends: function() {
return ($("#medical").val() == "medyes");
}
}
},
},
在 .validate()
方法中,只能使用每个输入元素的 name
属性来分配规则。由于我没有看到任何带有 name="medcon"
的输入,因此需要更改它以匹配文本输入元素上的 name
。
请参阅 depends
的文档:jqueryvalidation.org/validate/#rules
为了 required
在 select
上工作,您还需要更改此行...
<option value="Select an option"></option>
进入这个...
<option value="">Select an option</option>