通过复选框切换必填字段 javascript
toggle required field via checkbox javascript
我已经搜索了一段时间这个问题,这是我想出的,但它不起作用:
<form action="Subscription.php" method="post">
<label>field1<a style="color:red">*</a></label>
<input type="text" id="field1" name="field1" pattern="^[A-Za-z -]+$" required>
<input type="checkbox" name="checkbox1" onclick="showMe('more'); togglerequirement();">Do you want more?
<div id="more" style="display:none">
<label>field2<a style="color:red">*</a></label>
<input type="text" id="field2" name="field2" pattern="^[A-Za-z -]+$">
</div>
<input type="submit" value="Invia richiesta di registrazione" class="btn" </form>
<script type="text/javascript">
function showMe (box) {
var chboxs = document.getElementsByName("more");
var vis = "none";
if(chboxs[0].checked) {
vis = "block";
}
document.getElementById(box).style.display = vis;
}
function togglerequirement(){
var checkbox = document.getElementsByName("more");
var field2= document.getElementsByid("field2");
if(checkbox[0].checked){
field2.setAttribute("required", "");
}else{
field2.removeAttribute("required");
}
}
</script>
在你说什么之前我已经尝试过fiedl2.required;这两种方式都行不通。
我能做什么?
您正在尝试查找名为 "more" 的复选框,但它的名称="checkbox1":
<input type="checkbox" name="checkbox1" onclick="showMe('more'); togglerequirement();">
它工作正常,但它在显示时将第二个字段更改为必填,而在隐藏时则不需要。所以你没有看到任何效果。
Not required here.
Required here.
如果我完全理解你的话,试试这个:
<form action="Subscription.php" method="post">
<label>field1<a style="color:red">*</a></label>
<input type="text" id="field1" name="field1" pattern="^[A-Za-z -]+$" required>
<input type="checkbox" name="more" onclick="showMe('more'); togglerequirement();">Do you want more?
<div id="more" style="display:none">
<label>field2<a style="color:red">*</a></label>
<input type="text" id="field2" name="field2" pattern="^[A-Za-z -]+$">
</div>
<input type="submit" value="Invia richiesta di registrazione" class="btn" </form>
<script type="text/javascript">
function showMe (box) {
var chboxs = document.getElementsByName("more");
var vis = "none";
if(chboxs[0].checked) {
vis = "block";
}
document.getElementById(box).style.display = vis;
}
function togglerequirement(){
var checkbox = document.getElementsByName("more");
var field2 = document.getElementById("field2");
if(checkbox[0].checked){
field2.setAttribute("required", "");
}else{
field2.removeAttribute("required");
}
}
</script>
我已经搜索了一段时间这个问题,这是我想出的,但它不起作用:
<form action="Subscription.php" method="post">
<label>field1<a style="color:red">*</a></label>
<input type="text" id="field1" name="field1" pattern="^[A-Za-z -]+$" required>
<input type="checkbox" name="checkbox1" onclick="showMe('more'); togglerequirement();">Do you want more?
<div id="more" style="display:none">
<label>field2<a style="color:red">*</a></label>
<input type="text" id="field2" name="field2" pattern="^[A-Za-z -]+$">
</div>
<input type="submit" value="Invia richiesta di registrazione" class="btn" </form>
<script type="text/javascript">
function showMe (box) {
var chboxs = document.getElementsByName("more");
var vis = "none";
if(chboxs[0].checked) {
vis = "block";
}
document.getElementById(box).style.display = vis;
}
function togglerequirement(){
var checkbox = document.getElementsByName("more");
var field2= document.getElementsByid("field2");
if(checkbox[0].checked){
field2.setAttribute("required", "");
}else{
field2.removeAttribute("required");
}
}
</script>
在你说什么之前我已经尝试过fiedl2.required;这两种方式都行不通。
我能做什么?
您正在尝试查找名为 "more" 的复选框,但它的名称="checkbox1":
<input type="checkbox" name="checkbox1" onclick="showMe('more'); togglerequirement();">
它工作正常,但它在显示时将第二个字段更改为必填,而在隐藏时则不需要。所以你没有看到任何效果。
Not required here.
Required here.
如果我完全理解你的话,试试这个:
<form action="Subscription.php" method="post">
<label>field1<a style="color:red">*</a></label>
<input type="text" id="field1" name="field1" pattern="^[A-Za-z -]+$" required>
<input type="checkbox" name="more" onclick="showMe('more'); togglerequirement();">Do you want more?
<div id="more" style="display:none">
<label>field2<a style="color:red">*</a></label>
<input type="text" id="field2" name="field2" pattern="^[A-Za-z -]+$">
</div>
<input type="submit" value="Invia richiesta di registrazione" class="btn" </form>
<script type="text/javascript">
function showMe (box) {
var chboxs = document.getElementsByName("more");
var vis = "none";
if(chboxs[0].checked) {
vis = "block";
}
document.getElementById(box).style.display = vis;
}
function togglerequirement(){
var checkbox = document.getElementsByName("more");
var field2 = document.getElementById("field2");
if(checkbox[0].checked){
field2.setAttribute("required", "");
}else{
field2.removeAttribute("required");
}
}
</script>