动态客户端脚本
时间:2020-03-06 14:35:12 来源:igfitidea点击:
我需要编写一个Java脚本。这应该可以验证是否在页面中选中了该复选框。这里的问题是该复选框位于网格内部,并且是动态生成的。原因是在设计时不知道需要渲染的复选框数。因此,仅在服务器端知道该ID。
解决方案
如果这是我们唯一的复选框,则可以执行getElementsByTagName()调用以获取所有输入,然后遍历返回的数组以查找适当的类型值(即复选框)。
我们也必须生成javascript,或者至少包含必须控制的复选框的javascript数据结构(数组)。
或者,我们可以创建一个包含元素,并在复选框类型的每个子输入元素上使用js循环。
这是一个想法:
如Anonymous所示,我们可以生成JavaScript,如果我们使用的是ASP.NET,则RegisterRegisterScriptBlock()方法会提供一些帮助。有关注入客户端脚本的MSDN
我们也可以编写或者生成一个以复选框为参数的javascript函数,并在复选框定义中添加onClick属性,以调用该函数并将自身作为参数传递
function TrackMyCheckbox(ck) { //keep track of state } <input type="checkbox" onClick="TrackMyCheckbox(this);".... />
问题中没有太多细节。但是,假设HTML网格是在服务器端生成的(不是在javascript中生成)。
然后将类添加到要确保选中的复选框。并循环遍历DOM,以查找该类的所有复选框。在jQuery中:
HTML:
<html> ... <div id="grid"> <input type="checkbox" id="checkbox1" class="must-be-checked" /> <input type="checkbox" id="checkbox2" class="not-validated" /> <input type="checkbox" id="checkbox3" class="must-be-checked" /> ... <input type="checkbox" id="checkboxN" class="must-be-checked" /> </div> ... </html>
Javascript:
<script type="text/javascript"> // This will show an alert if any checkboxes with the class 'must-be-checked' // are not checked. // Checkboxes with any other class (or no class) are ignored if ($('#grid .must-be-checked:not(:checked)').length > 0) { alert('some checkboxes not checked!'); } </script>