问题描述
我们正在使用Formassembly创建我们的表单,当前我们有一个供内部和外部用户使用的表单。表格中有一个复选框,用于区分内部和外部用户。我需要代码来检查“内部” 复选框是否被选中,如果“内部” 复选框被选中,则电子邮件字段必须为可选,否则电子邮件字段需要。我认为可以通过Javascript来实现,或者请告知是否还有其他方法。我对编码一无所知,但尝试在线查找并尝试编码,但是它不起作用。请帮忙。
<script src="https://code.jquery.com/jquery-1.9.1.min.js"></script>
<script>
{
//#tfa_78 is the checkBox
if($("#tfa_78").is(":checked")) {
//#tfa_1 is the email field
this.getField("#tfa_1").required = false;
}
else
{
this.getField("#tfa_1").required = true;
}
});
});
</script>
解决方法
您可以在复选框上使用属性onblur
来触发JS函数,以检查其状态,然后需要或不需要您的电子邮件输入。
每次复选框失去焦点(因此每次更改或单击)时,都会触发onblur
。
<input id="tfa_78" type="checkbox" onblur="mailRequired(this.checked)"></input>
<input id="tfa_1" type="mail"></input>
<script>
function mailRequired(checked) {
if (checked) {
document.getElementByID('tfa_1').required = true;
} else {
document.getElementByID('tfa_1').required = false;
}
}
</script>
,
由于有了JQuery,我们可以解决以下问题
$(document).ready(function() {
//#tfa_78 is the checkbox
$("#tfa_78").change(function(){
if($("#tfa_78").is(":checked")) {
//#tfa_1 is the email field
$("#tfa_1").attr("placeholder","Optional Email");
$("#tfa_1").attr("required",false)
}
else
{
$("#tfa_1").attr("placeholder","Requierd Email");
$("#tfa_1").attr("required",true)
}
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="checkbox" id="tfa_78" /> Local User
<br />
<input type="email" id="tfa_1" required placeholder="Requierd" />
,
我设法使其工作。这是我的代码。但是,如果未选中该复选框,如果我需要它工作怎么办?会是$(“#tfa_78”)。is(“:checked == false”)吗?
<script>
$(document).ready(function() {
//#tfa_78 is the checkbox
$("#tfa_78").change(function(){
$("#tfa_78").is(":checked")
$('#tfa_1').addClass('required')
});
});
</script>