【问题标题】:Dynamic Client Script动态客户端脚本
【发布时间】:2010-09-12 07:11:20
【问题描述】:

我需要编写一个 java 脚本。这应该验证是否在页面中选中了复选框。这里的问题是复选框在网格内并且是动态生成的。原因是在设计时不知道需要呈现的复选框的数量。所以 id 只有在服务器端才知道。

【问题讨论】:

  • ASP.Net,对吗?编辑问题以包含您的服务器端平台的标签。

标签: javascript scripting server-side-scripting


【解决方案1】:

这是一个想法:

正如 Anonymous 所指出的,您可以生成 javascript,如果您在 ASP.NET 中,您可以使用 RegisterClientScriptBlock() 方法获得一些帮助。 MSDN on Injecting Client Side Script

您还可以编写或生成一个 javascript 函数,该函数接受一个复选框作为参数,并向您的复选框定义添加一个 onClick 属性,该属性调用您的函数并将自身作为参数传递

function TrackMyCheckbox(ck)
{
     //keep track of state
}

<input type="checkbox" onClick="TrackMyCheckbox(this);".... />

【讨论】:

    【解决方案2】:

    你也必须生成你的 javascript,或者至少一个 javascript 数据结构(数组)必须包含你应该控制的复选框。

    或者,您可以创建一个包含元素,并在每个复选框类型的子输入元素上使用 js 循环。

    【讨论】:

      【解决方案3】:

      如果这是您唯一的复选框,您可以调用 getElementsByTagName() 来获取所有输入,然后遍历返回的数组以查找适当的类型值(即复选框)。

      【讨论】:

        【解决方案4】:

        这个问题没有太多细节。但假设 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>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-01-22
          • 2017-04-01
          • 2016-08-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多