ASP.NET错误:“无法在子元素关闭之前修改父容器元素”

时间:2009-11-09 19:37:30

标签: asp.net jquery

我试图制作这个方法时遇到了很大的问题。我有一个网页,我需要编写一个返回特定属性的编辑器的方法。颜色的方法实现了“来自eyecon.ro的JQUERY Colorpicker”。

private static string GetColorBox(string name, int width, string value)
{
    return "<input type=\"text\" maxlength=\"6\" size=\"6\" id=\"colorPickerHolder" + name + "\" value=\"000000\" />" +
        "<script type=\"text/javascript\">" +
        "$('#colorPickerHolder" + name + "').ColorPicker(" +
        "{" +
          "onSubmit: function(hsb, hex, rgb, el) " +
          "{" +
            "$(el).val(hex);" +
            "$(el).ColorPickerHide();" +
          "}," +
          "onBeforeShow: function () " +
          "{" +
            "$(this).ColorPickerSetColor(this.value);" +
          "}" +
        "})" +
        ".bind('keyup', function()" +
        "{" +
          "$(this).ColorPickerSetColor(this.value);" +
        "});" +
    "</script>";
}

我有几次调用此方法但在第一次调用后第二次调用时抱怨:

  

网页错误详情

     

用户代理:Mozilla / 4.0(兼容; MSIE 8.0; Windows NT 5.1;   三叉戟/ 4.0; GTB6; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR   3.0.04506.648; .NET CLR 3.5.21022; InfoPath.1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)时间戳:星期一,2009年11月9日19:35:33 UTC

     

消息:HTML分析错误:无法修改父容器   子元素关闭之前的元素(KB927917)行:0字符:0   代码:0 URI:http://localhost:1442/Slide/CreateTemplateSlide/33

它呈现的HTML如下所示:

<tr>
    <td width="150px" nowrap="nowrap">
        Text color:
    </td>
    <td>
        <input type="text" maxlength="6" size="6" id="colorPickerHolderTextColor" value="000000" /><script type="text/javascript">$('#colorPickerHolderTextColor').ColorPicker({onSubmit: function(hsb, hex, rgb, el) {$(el).val(hex);$(el).ColorPickerHide();},onBeforeShow: function () {$(this).ColorPickerSetColor(this.value);}}).bind('keyup', function(){$(this).ColorPickerSetColor(this.value);});</script>
    </td>
</tr>

<tr>
    <td width="150px" nowrap="nowrap">
        Text size:
    </td>
    <td>
        <input name="TextSize" width="5px" type="text" value=""></input>
    </td>
</tr>

<tr>
    <td width="150px" nowrap="nowrap">
        Background color:
    </td>
    <td>
        <input type="text" maxlength="6" size="6" id="colorPickerHolderBackColor" value="000000" ><script type="text/javascript">$('#colorPickerHolderBackColor').ColorPicker({onSubmit: function(hsb, hex, rgb, el) {$(el).val(hex);$(el).ColorPickerHide();},onBeforeShow: function () {$(this).ColorPickerSetColor(this.value);}}).bind('keyup', function(){$(this).ColorPickerSetColor(this.value);});</script>
    </td>

我不知道为什么会发生这种情况,任何人都会指出我正确的方向?

1 个答案:

答案 0 :(得分:1)

尝试关闭input代码前的script代码。

编辑:您可能还想从该调用中删除脚本部分,并创建一个适用于特定类的专用部分。

private static string GetColorBox(string name, int width, string value)
{
    return "<input class=\"myParticularColorBoxingClass\" type=\"text\" maxlength=\"6\" size=\"6\" id=\"colorPickerHolder" + name + "\" value=\"000000\" >";
}

EDIT2 :您只需在页面中直接添加脚本即可运行一次。
请你把它放在你的页面里吗? 请务必添加class=\"myParticularColorBoxingClass\"(请参阅上述方法)。

<script type="text/javascript">
    //run this after document has finished loading!
    $(document).ready(
      function() { 
         //activate all inputs with "myParticularColorBoxingClass" class
         $('input .myParticularColorBoxingClass').ColorPicker(
                {
                  onSubmit: function(hsb, hex, rgb, el)
                  {
                    $(el).val(hex);
                    $(el).ColorPickerHide();
                  },
                  onBeforeShow: function () 
                  {
                    $(this).ColorPickerSetColor(this.value);
                  }
                })
                .bind('keyup', function()
                {
                  $(this).ColorPickerSetColor(this.value);
                });
      }
   );
</script>