表单请求在FF(Firefox)中不起作用,但在Chrome中工作

时间:2013-09-11 10:46:32

标签: jquery html ruby-on-rails ruby firefox

我正在使用jquery在我的页面中获取rails Html代码。所以我使用此代码: -

$("#but").html( ''+
    '<div class = "newb">'+
        '<table>'+
            '<tr>'+

                '<%= link_to "Add a Patient", "/outpatient_detail",:class=>"btn btn-primary",:style=>"color:white" %>'+
                '<%= form_tag("/PatientManagement/delete", method: "post",:id=>"testform") do %>'+
                '<%= text_field_tag "patientIdsDel",nil,:type=>"hidden" %>'+
                '<%= text_field_tag "hospitalId",current_user.hospital.id,:type=>"hidden"%>'+
                '<%= text_field_tag "processType","outpatient",:type=>"hidden"%>'+
                '<%= text_field_tag "finalJson","",:type=>"hidden"%>'+
                '<%= text_field_tag "imppath",@pathimp[0],:type=>"hidden"%>'+
                '<%= text_field_tag "exportP",@pathimp[7],:type=>"hidden"%>'+
                '<%= submit_tag "Delete Selected",:id=>"2",:onclick => "return del()",:class=>"btn btn-primary"%>'+
                '<%end%>'+

            '</tr>'+
        '</table>'+
    '</div>'
     );

此代码在Google Chrome浏览器中完美运行,但在FF,IE,Opera中无效。 那我怎么解决呢? 它生成的HTML是: - enter image description here

我的del()是

function del(){
        //alert("in del")
    var arl=document.getElementById("patientIdsDel").value=keys(arr);
  //alert(arl)
    var tempA = keys(arr)


    for(var i=0;i<tempA.length;i++){
        tempA[i]+'"'+":"+arr[tempA[i]]
    }


    var hid=document.getElementById("hospitalId").value;
    var ptype=document.getElementById("processType").value;
    //alert(ptype+hid)


     var jsonObj = {

             "hospitalId": hid,
             "processType":ptype
         };

    var patientIDs = {};

    for(var i=0;i<tempA.length;i++){

        patientIDs[tempA[i]] = arr[tempA[i]];

    }     


        jsonObj["patientIDs"]=patientIDs;
         var jsonString = JSON.stringify(jsonObj);

         // alert(jsonString)

         var ee= document.getElementById("patientIdsDel").value=jsonString;
    if(arl==0)
    {
        alert("No Records Selected")
        return false
    }else
    {


        return true
    }

  }

这是我的描述如何更新它

if(selected==true){
  if(arr[model.attributes.PatientId]==undefined)
  {

    arr[model.attributes.PatientId] =  "'"+model.attributes.MeasureCategory+"'";

  }  else
  {
    arr[model.attributes.PatientId]=arr[model.attributes.PatientId]+",'"+model.attributes.MeasureCategory+"'";

  } 




    // arr[model.attributes.PatientId] =  "'"+model.attributes.MeasureCategory+"'";



  }
  else if(selected==false){
    var str=arr[model.attributes.PatientId];
    var n =arr[model.attributes.PatientId].split(",");
    var len=n.length;
    if(len==1)
    {
        delete arr[model.attributes.PatientId];
        //alert(arr[model.attributes.PatientId])
    }
    else{
        for(i=0;i<=len;i++)
    {
        if(n[i]=="'"+model.attributes.MeasureCategory+"'")
        {
            if(i==len-1)
                str=str.replace(",'"+model.attributes.MeasureCategory+"'","");
            else
                str=str.replace("'"+model.attributes.MeasureCategory+"',","");

            arr[model.attributes.PatientId]=str;
            //alert(arr[model.attributes.PatientId])

        }
    }
    // alert(n[0]+","+n[1])
    // alert(model.attributes.MeasureCategory)



    }

1 个答案:

答案 0 :(得分:0)

我的感觉是你的del函数中有一些'语法'错误。

你可以粘贴所有代码,什么是密钥(arr)?

另请注意每行必须以;在javascript中。根据您的浏览器,可能无法解释或生成错误。

var arr = new Array();
function del(){
var arl=document.getElementById("patientIdsDel").value=keys(arr);
var tempA = keys(arr);

for(var i=0;i<tempA.length;i++){
    tempA[i]+'"'+":"+arr[tempA[i]];
}

var hid=document.getElementById("hospitalId").value;
var ptype=document.getElementById("processType").value;

 var jsonObj = {

         "hospitalId": hid,
         "processType":ptype
     };

var patientIDs = {};

for(var i=0;i<tempA.length;i++){
    patientIDs[tempA[i]] = arr[tempA[i]];
}     


    jsonObj["patientIDs"]=patientIDs;
     var jsonString = JSON.stringify(jsonObj);

     var ee= document.getElementById("patientIdsDel").value=jsonString;
if(arl==0)
{
    alert("No Records Selected");
    return false;
}else
{
    return true;
}
}