0

我有一个网站表单,其中只有在选中复选框时才需要我需要的字段(使用 JQuery 插件)。

到目前为止,如果未选中或选中复选框,我编写的 JavaScript 就可以工作。但是当用户选中复选框然后取消选中它时,代码不起作用(未选中时字段仍然是必需的)。

另外一个错误是由于某种原因,相同的代码仅适用于仅更新一个需要布尔值的项目。例如,如果我有相同的代码,但要更新两个元素要求,则脚本根本不起作用。

以下是相关的源代码:

<script>
function swap(){
  if(document.getElementById('must').checked){     
    document.getElementById("element1").setAttribute("required", "true");
  }else{      
    document.getElementById("element1").setAttribute("required", "false");
  }
}
</script>


<form>
<input type="checkbox" onclick="swap();" id="must" name="must" value="1" style="width:10;">
<input id="element1" type="text" name="element1" placeholder="Enter Value" >
<input type="submit" id="submit" name="submit" value="Send" >
</form>     

任何帮助将不胜感激。

4

3 回答 3

2

我知道检查是否checkbox是的最好方法是checked使用 jQueryis()方法(文档)。它为您处理 x 浏览器的差异。向 HTML 元素添加属性的最佳方法是使用attr()方法。

if($("#must").is(":checked")) {
    $("#element1").attr('required', 'required');
} else {
    $("#element1").removeAttr();
}

您可以在 DOM 检查器中检查该属性已添加。

所需的属性文档在此处

于 2013-04-23T01:57:08.610 回答
1

试试这个,在 xhtml 中我们指定 required="required" 并且没有 required="false",更好的方法是删除 else 上 required 的属性

<script type="text/javascript">
   function swap(){
  if(document.getElementById('must').checked){     
    document.getElementById("element1").setAttribute("required", "required");
  }else{      
    document.getElementById("element1").removeAttribute("required");
  }
}
    </script>
于 2013-04-23T02:00:55.650 回答
0

required 属性是一个布尔属性,它存在意味着该字段是必需的,它不存在意味着该字段不是必需的。它只有 3 种有效形式 1.required单独 2.required=""等于空字符串 3.required="required"

于 2013-04-23T01:57:43.670 回答