问题
My users have access to a form.
To simplify the task I put a selectable list but if the answer is not in the list, they can add a reason manually
The selectable list is required by default but if the user accesses the text field it becomes required and the list is no longer required (and vice versa).
HTML:
<div class="form-group">
<select name="motif" class="form-control input-lg" required>
<option selected="true" disabled="disabled" value="">Select</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
</div>
<div class="form-group">
<input name="messagetick" id="messagetick2" type="checkbox" value="yes" /> Other
</div>
<div id="motif-reject" class="form-group" style="display: none">
<textarea class="form-control" rows="5" placeholder="reason" name="motif-text"></textarea>
</div>
JS:
$('input[name="messagetick"]').click(function() {
$('#motif-reject').toggle(this.checked);
});
You can see the JsFiddle: https://jsfiddle.net/rkkdhant/
I do not know how to do with a toggle, can you help me?
回答1:
You can use the same boolean you're using to toggle
the textarea: this.checked
. Then set the required
property to your motif
select and motif-text
textarea like this:
$('input[name="messagetick"]').click(function () {
$('#motif-reject').toggle(this.checked);
$("textarea[name='motif-text']").prop("required", this.checked);
$("select[name='motif']").prop("required", !this.checked);
});
Please try the following snippet:
$('input[name="messagetick"]').click(function () {
$('#motif-reject').toggle(this.checked);
$("textarea[name='motif-text']").prop("required", this.checked);
$("select[name='motif']").prop("required", !this.checked);
console.log("Checkbox check: " + this.checked);
console.log("Textarea required: " + $("textarea[name='motif-text']").prop("required"));
console.log("Select required: " + $("select[name='motif']").prop("required"));
console.log("----------------------------------");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="form-group">
<select name="motif" class="form-control input-lg" required>
<option selected="true" disabled="disabled" value="">Select</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
</div>
<div class="form-group">
<input name="messagetick" id="messagetick2" type="checkbox" value="yes" />
Other
</div>
<div id="motif-reject" class="form-group" style="display: none">
<textarea class="form-control" rows="5" placeholder="reason" name="motif-text"></textarea>
</div>
回答2:
Html :
<div class="form-group">
<select name="motif" class="form-control input-lg">
<option selected="true" disabled="disabled" value="">Select</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
</div>
<div class="form-group">
<input name="messagetick" id="messagetick2" type="checkbox" value="yes" />
Other
</div>
<div id="motif-reject" class="form-group" style="display: none">
<textarea class="form-control" rows="5" placeholder="reason" name="motif-text">
</textarea>
</div>
JS:
if(!$('#messagetick2').is(':checked')){
$("select").prop('required',true);
}
$('input[name="messagetick"]').click(function() {
$("select").prop('required',false);
$('#motif-reject').toggle(this.checked);
$("textarea").prop('required',true);
});
回答3:
Can can do a check where it is selected or not. And make required true and false based on that check.
Try This JSFIFFLE
$('input[name="messagetick"]').click(function() {
$('#motif-reject').toggle(this.checked);
if ($("#messagetick2").is(":checked")) {
$('#motif').prop('disabled', 'disabled');
$('#motif').prop('required', '');
}else{
$('#motif').prop('disabled', '');
$('#motif').prop('required', 'required');
}
});
来源:https://stackoverflow.com/questions/45961503/how-to-add-and-remove-a-required-attribute-with-a-toggle