Syntax error, unrecognized expression:[@name='R1'][@checked] 在火狐中报错

jquery1.3.2中的方法为:

view plaincopy to clipboardprint?
  //全部选中全部取消处理  
   function CheckTrue(obj)  
   {  
    $("input[@type=checkbox][name=checkItem]").attr("checked",$(obj).attr("checked"));  
   }  
     
   //收集被选中的项  
function CollectCheckItems()  
{  
  var allcheckboxs=$("input[@type=checkbox][name=checkItem][checked]");  
  var ids=new StringBuilder();  
  for(var i=0;i<allcheckboxs.length;i++)  
  {  
              var id=$(allcheckboxs[i]).attr("id").split("_")[1];  
              ids.Append(id)  
              ids.Append(",");  
  }  
    var strIds=ids.ToString();  
       return strIds.substr(0,strIds.length-1);  

    //全部选中全部取消处理
     function CheckTrue(obj)
     {
      $("input[@type=checkbox][name=checkItem]").attr("checked",$(obj).attr("checked"));
     }
    
     //收集被选中的项
  function CollectCheckItems()
  {
    var allcheckboxs=$("input[@type=checkbox][name=checkItem][checked]");
    var ids=new StringBuilder();
    for(var i=0;i<allcheckboxs.length;i++)
    {
                var id=$(allcheckboxs[i]).attr("id").split("_")[1];
                ids.Append(id)
                ids.Append(",");
    }
      var strIds=ids.ToString();
         return strIds.substr(0,strIds.length-1);
  }

关于StringBuilder 见本文最后部分。

全选框的HTML:

view plaincopy to clipboardprint?
<input type="checkbox" id='checkAll' name='checkAll' οnclick='CheckTrue(this)' />全选 
<input type="checkbox" id='checkAll' name='checkAll' οnclick='CheckTrue(this)' />全选

单行数据中的选择框的HTML:

view plaincopy to clipboardprint?
<input type="checkbox" id="checkItem_<%=item.productid%>" name='checkItem' /> 
<input type="checkbox" id="checkItem_<%=item.productid%>" name='checkItem' />

该方法的特点是生成的列表HTML中,选择框的id值都为"checkItem_"+id,name为"checkItem"。

以上脚本的方法就是通过选择框的id获得数据列表中该行数据的ID。

jquery1.2.6中的方法为:

view plaincopy to clipboardprint?
   //全部选中全部取消处理  
   function CheckTrue(obj)  
   {  
    $("input[@type=checkbox][@name=checkItem]").attr("checked",$(obj).attr("checked"));  
   }  
   //收集被选中的项  
function CollectCheckItems()  
{  
  var allcheckboxs=$("input[@type=checkbox][@name=checkItem][checked]");  
  var ids=new StringBuilder();  
  for(var i=0;i<allcheckboxs.length;i++)  
  {  
              var id=$(allcheckboxs[i]).attr("id").split("_")[1];  
              ids.Append(id)  
              ids.Append(",");  
  }  
    var strIds=ids.ToString();  
       return strIds.substr(0,strIds.length-1);  

     //全部选中全部取消处理
     function CheckTrue(obj)
     {
      $("input[@type=checkbox][@name=checkItem]").attr("checked",$(obj).attr("checked"));
     }
     //收集被选中的项
  function CollectCheckItems()
  {
    var allcheckboxs=$("input[@type=checkbox][@name=checkItem][checked]");
    var ids=new StringBuilder();
    for(var i=0;i<allcheckboxs.length;i++)
    {
                var id=$(allcheckboxs[i]).attr("id").split("_")[1];
                ids.Append(id)
                ids.Append(",");
    }
      var strIds=ids.ToString();
         return strIds.substr(0,strIds.length-1);
  }

在Jquery1.3.2版使用该方法会报错: “Microsoft JScript 运行时错误: 例外被抛出且未被接住”,

定位到 “ throw "Syntax error, unrecognized expression: " + expr;”代码


原因: JQuery1.3.2版,“name”属性前不用加“@”符号。 例如:

$("input[@type=radio][name=checkItem][checked]")


 


批量删除的方法:

view plaincopy to clipboardprint?
//删除选中俱乐部信息  
function DeleteCompanyInfos()  
{  
   if(!window.confirm("确定要删除您选择的数据项吗?"))  
   {  
     return;  
   }  
   var checkedItems=CollectCheckItems();  
if(checkedItems=="")  
{  
    alert("请选择要删除的客户!");  
    return;  
}  
$("#divGridView").html("<ul> <li> 正在尝试删除数据...</li> </ul>");  
   $.ajax(  
    {  
       type:'POST',  
       url:'ManageAbout.aspx',  
       dataType:'text',  
       data:{Action:'delete',CompanyInfoIDs:checkedItems},  
       cache:false,  
       success:DeleteCompanyInfosCallBack     
    }  
    );  
}  
//删除选中俱乐部信息回调函数  
function DeleteCompanyInfosCallBack(r)  
{  
if(r=="0")  
{  
    alert("删除成功!");  
}  
else 
{  
    alert("删除失败!");  
}  
LoadCompanyInfoList();  

     //删除选中俱乐部信息
     function DeleteCompanyInfos()
     {
        if(!window.confirm("确定要删除您选择的数据项吗?"))
        {
          return;
        }
        var checkedItems=CollectCheckItems();
     if(checkedItems=="")
     {
         alert("请选择要删除的客户!");
         return;
     }
     $("#divGridView").html("<ul> <li> 正在尝试删除数据...</li> </ul>");
        $.ajax(
         {
            type:'POST',
            url:'ManageAbout.aspx',
            dataType:'text',
            data:{Action:'delete',CompanyInfoIDs:checkedItems},
            cache:false,
            success:DeleteCompanyInfosCallBack  
         }
         );
     }
     //删除选中俱乐部信息回调函数
     function DeleteCompanyInfosCallBack(r)
     {
     if(r=="0")
     {
         alert("删除成功!");
     }
     else
     {
         alert("删除失败!");
     }
     LoadCompanyInfoList();
     }

ManageAbout.aspx页面的Page_Load中是这样接收参数进行批量删除的。

view plaincopy to clipboardprint?
//删除数据  
if (action == "delete")  
{  
    string strId = Request["CompanyInfoIDs"];  
    if (strId != null)  
    {  
        if (DeleteCompanyInfo(strId))  
        {  
            returnValue = "0";  
        }  
        else 
        {  
            returnValue = "1";  
        }  
    }  
    else 
    {  
        returnValue = "1";  
    }  
    //向客户端发送数据  
    Response.Clear();  
    Response.Expires = 0;  
    Response.ContentType = "application/xml";  
    Response.Write(returnValue);  
    Response.End();  

            //删除数据
            if (action == "delete")
            {
                string strId = Request["CompanyInfoIDs"];
                if (strId != null)
                {
                    if (DeleteCompanyInfo(strId))
                    {
                        returnValue = "0";
                    }
                    else
                    {
                        returnValue = "1";
                    }
                }
                else
                {
                    returnValue = "1";
                }
                //向客户端发送数据
                Response.Clear();
                Response.Expires = 0;
                Response.ContentType = "application/xml";
                Response.Write(returnValue);
                Response.End();
            }

其中DeleteCompanyInfo为ManageAbout.aspx.cs中的一个方法,调用的是BLL中的数据处理方法。

这种批量处理的方法在ASP.NET MVC中则只需将id字符串传给一个带接收id字符串参数(string类型)的Action既可,Action中则根据获得的id调用数据处理层的删除方法。

 

 

上文JS中的StringBuilder方法,是引用的一个JS文件中的方法,代码如下:

view plaincopy to clipboardprint?
// 用来连接字符串,提高字符串的拼接速度  
function StringBuilder()   
{  
    this.buffer = new Array();  
}  
StringBuilder.prototype.Append = function Append(string)   
{  
    if ((string ==null) || (typeof(string)=='undefined'))  
        return;  
    if ((typeof(string)=='string') && (string.length == 0))  
        return;  
    this.buffer.push(string);  
};  
StringBuilder.prototype.AppendLine = function AppendLine(string)   
{  
    this.Append(string);  
    this.buffer.push("/r/n");  
};  
StringBuilder.prototype.Clear = function Clear()   
{  
    if (this.buffer.length >0 ){  
        this.buffer.splice(0,this.buffer.length);  
    }  
};  
StringBuilder.prototype.IsEmpty = function IsEmpty()   
{  
//    return (this.buffer.length == 0);  
};  
StringBuilder.prototype.ToString = function ToString()   
{  
    return this.buffer.join("");  
};  
//处理日期字符串  
function FormatDateType(date)  
{  
    if(date)  
    {  
        return date.getFullYear()+"-"+(date.getMonth()+1)+"-"+date.getDate();  
    }  
    else 
    {  
        return "";  
    }     

// 用来连接字符串,提高字符串的拼接速度
function StringBuilder()
{
    this.buffer = new Array();
}
StringBuilder.prototype.Append = function Append(string)
{
    if ((string ==null) || (typeof(string)=='undefined'))
        return;
    if ((typeof(string)=='string') && (string.length == 0))
        return;
    this.buffer.push(string);
};
StringBuilder.prototype.AppendLine = function AppendLine(string)
{
    this.Append(string);
    this.buffer.push("/r/n");
};
StringBuilder.prototype.Clear = function Clear()
{
    if (this.buffer.length >0 ){
        this.buffer.splice(0,this.buffer.length);
    }
};
StringBuilder.prototype.IsEmpty = function IsEmpty()
{
//    return (this.buffer.length == 0);
};
StringBuilder.prototype.ToString = function ToString()
{
    return this.buffer.join("");
};
//处理日期字符串
function FormatDateType(date)
{
    if(date)
    {
        return date.getFullYear()+"-"+(date.getMonth()+1)+"-"+date.getDate();
    }
    else
    {
        return "";
    }  
}

 


之前1.3.2版本的JS中,$("input[@type=radio][name=checkItem][checked]")写成$("input[type=radio][name=checkItem][checked]")了,导致在火狐中无效。

因为type前没加“@”,现已更正。

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/N_IThero/archive/2009/10/28/4738288.aspx

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值