2016-11-17 53 views
1

我得到这个错误,所以我的更新按钮不工作,我没有更新我的数据库进度,因为这个错误。我想显示文本框,我尝试在侧面的.cs做asp:textbox Uncaught TypeError:无法读取未定义的属性'值'

使用checkboxs和textboxs这个JavaScript代码发送到CS侧JSON

 function UpdateDetails1() { 
 

 
      var bEnabled = GetCheckBoxVal($("#<%=CB_Enabled_Edit.ClientID%>")); 
 
      var bDisplayDetails = GetCheckBoxVal($("#<%=CB_DisplayDetails_Edit.ClientID%>")); 
 
      var b3rdParty = GetCheckBoxVal($("#<%=CB_b3rdParty_Edit.ClientID%>")); 
 
      var bDisplayOpenNow = GetCheckBoxVal($("#<%=CB_DisplayOpenNow_Edit.ClientID%>")); 
 
      var bReservation = GetCheckBoxVal($("#<%=CB_Reservation_Edit.ClientID%>")); 
 
      var bPromotion = GetCheckBoxVal($("#<%=CB_Promotion_Edit.ClientID%>")); 
 
      var bOnlyPromotion = GetCheckBoxVal($("#<%=CB_OnlyPromotion_Edit.ClientID%>")); 
 
      var bAllowFollow = GetCheckBoxVal($("#<%=CB_AllowFollow_Edit.ClientID%>")); 
 
      var bAlacarte = GetCheckBoxVal($("#<%=CB_Alacarte_Edit.ClientID%>")); 
 
      var bDisplayOpenEat = GetCheckBoxVal($("#<%=CB_DisplayOpenEat_Edit.ClientID%>")); 
 
      var Coord_Lat = $("#<%=TB_Coord_Lat_Edit.ClientID%>")[0].value; 
 
      var Coord_Long = $("#<%=TB_Coord_Long_Edit.ClientID%>")[0].value; 
 
      var Price = $("#<%=TB_Price_Edit.ClientID%>")[0].value; 
 
      alert(Price); 
 
      var Phone_Number = $('#<%=TB_Phone_Number_Edit.ClientID%>')[0].value; 
 
      if (bReservation == true) 
 
       $("#display_res_schedule").css("display", "block"); 
 
      else 
 
       $("#display_res_schedule").css("display", "none"); 
 

 
      var jsonData = '{ bEnabled: "' + bEnabled + '",' + 
 
        'bDisplayDetails: "' + bDisplayDetails + '",' + 
 
        'b3rdParty: "' + b3rdParty + '",' + 
 
        'Price: "' + Price + '",' + 
 
        'bDisplayOpenNow: "' + bDisplayOpenNow + '",' + 
 
        'bReservation: "' + bReservation + '",' + 
 
        'bPromotion: "' + bPromotion + '",' + 
 
        'Phone_Number: "' + Phone_Number + '",' + 
 
        'bOnlyPromotion: "' + bOnlyPromotion + '",' + 
 
        'bAllowFollow: "' + bAllowFollow + '",' + 
 
        'bAlacarte: "' + bAlacarte + '",' + 
 
        'bDisplayOpenEat: "' + bDisplayOpenEat + '",' + 
 
        'Coord_Lat: "' + Coord_Lat + '",' + 
 
        'Coord_Long: "' + Coord_Long + '" }'; 
 
      
 
      alert(jsonData); 
 
      // var jsonData = '{ bEnabled: "' + bEnabled + '",' + 
 
      //  'bDisplayOpenNow: "' + bDisplayOpenNow + '",' + 
 
      //   'bReservation: "' + bReservation + '",' + 
 
      //   'Coord_Lat: "' + Coord_Lat + '",' + 
 
      //   'Coord_Long: "' + Coord_Long + '" }'; 
 

 
      $.ajax({ 
 
       type: "POST", 
 
       url: "Edit.aspx/UpdateDetails1", 
 
       data: jsonData, 
 
       contentType: "application/json; charset=utf-8", 
 
       dataType: "json", 
 
       success: GetDetails1, 
 
       failure: function (response) { 
 
        alert(response.d); 
 
       } 
 
      }); 
 
     }

我需要做的上可见的伪复选框,并且我不使用文本框。但TB_Phone_Number_Edit.Visible获得遗漏的类型错误:无法读取未定义的错误

protected void Page_Load(object sender, EventArgs e) 
    { 
     LoadType = Request.QueryString["t"].ToString(); 
     if (LoadType == "Agency") 
     { 
      CB_DisplayOpenNow.Visible = false; 
      CB_DisplayOpenNow_Edit.Visible = false; 
      CB_Alacarte.Visible = false; 
      CB_Alacarte_Edit.Visible = false; 
      CB_DisplayOpenEat.Visible = false; 
      CB_DisplayOpenEat_Edit.Visible = false; 
      CB_Reservation.Visible = false; 
      CB_Reservation_Edit.Visible = false; 
      CB_Promotion.Visible = false; 
      CB_Promotion_Edit.Visible = false; 
      CB_OnlyPromotion.Visible = false; 
      CB_OnlyPromotion_Edit.Visible = false; 
      TB_Price_Edit.Visible = false; 
      DDL_Currency.Visible = false; 
      DDL_Camera.Visible = false; 
      CB_AllowFollow.Visible = false; 
      CB_AllowFollow_Edit.Visible = false; 
      WhatDoNow.Visible = false; 
      Alacarte.Visible = false; 
      WhatEatNow.Visible = false; 
      Promotion.Visible = false; 
      Reservation.Visible = false; 
      OnlyPromotion.Visible = false; 
      Price.Visible = false; 
      Camera.Visible = false; 
      AllowFollow.Visible = false; 
      Label23.Visible = false; 
      Label24.Visible = false; 
      Label25.Visible = false; 
      Label26.Visible = false; 
      Label27.Visible = false; 
      Label29.Visible = false; 
      Label30.Visible = false; 
      Label33.Visible = false; 
      Label34.Visible = false; 
      TB_Price_Edit.Visible = false; 
     } 
     else if(LoadType == "Tour"){ 
      CB_b3rdParty.Visible = false; 
      CB_b3rdParty_Edit.Visible = false; 
      CB_Alacarte.Visible = false; 
      CB_Alacarte_Edit.Visible = false; 
      DDL_Camera.Visible = false; 
      CB_AllowFollow.Visible = false; 
      CB_AllowFollow_Edit.Visible = false; 
      CB_DisplayOpenEat.Visible = false; 
      CB_DisplayOpenEat_Edit.Visible = false; 
      b3rdParty.Visible = false; 
      Alacarte.Visible = false; 
      WhatEatNow.Visible = false; 
      Camera.Visible = false; 
      AllowFollow.Visible = false; 
      Label18.Visible = false; 
      Label24.Visible = false; 
      Label25.Visible = false; 
      Label33.Visible = false; 
      Label34.Visible = false; 
      Phone_Number.Visible = false; 
      TB_Phone_Number_Edit.Visible = false; 
      Label8.Enabled = false; 

     } 
+0

我改变了这篇文章中的代码,但是这个错误仍在继续。我如何解决这个错误,我可以帮我吗? – wotmn

回答

0

假设这个问题是不是在GetCheckBoxVal任何下面的语句是导致您的问题:

var Coord_Lat = $("#<%=TB_Coord_Lat_Edit.ClientID%>")[0].value; 
var Coord_Long = $("#<%=TB_Coord_Long_Edit.ClientID%>")[0].value; 
var Price = $("#<%=TB_Price_Edit.ClientID%>")[0].value; 
var Phone_Number = $('#<%=TB_Phone_Number_Edit.ClientID%>')[0].value; 

为什么?因为如果给jQuery的css选择器没有返回任何匹配,数组将会有零个元素,也就是说,它的长度将为0.这意味着即使在元素[0]上也没有任何内容,它的值是未定义的。试图获得一个属性或调用一个未定义的值的方法会让你看到异常。

建议duplicate建议您应该防范这种情况。一种可能的方式是引入一个效用函数:

// this gets the value property of an object and if object is undefined 
// returns a default 
function getValueOrDefault(someObject, reasonableDefault) { 

    return someObject === undefined ? reasonableDefault : someObject.value; 
} 

// your original function 
function UpdateDetails1() { 
    // rest of your code 
} 

有了这一功能,你的代码就变成了:

var Coord_Lat = getValueOrDefault($("#<%=TB_Coord_Lat_Edit.ClientID%>")[0], '0.0'); 
var Coord_Long = getValueOrDefault($("#<%=TB_Coord_Long_Edit.ClientID%>")[0], '0.0'); 
var Price = getValueOrDefault($("#<%=TB_Price_Edit.ClientID%>")[0],0); 
var Phone_Number = getValueOrDefault($('#<%=TB_Phone_Number_Edit.ClientID%>')[0],'+1 010'); 

应该可以解决未捕获的类型错误。这是由你来提出合理的违约。

0

的特性“值”文本框设置为Visible = false使得它不会在你的HTML渲染。所以当你试图在你的javascript中获得价值时,它实际上不存在,使它成为undefined

要解决此问题,请将文本框替换为隐藏字段或更改不透明度,以便文本框在那里但透明。

+0

我知道文本框可见虚假不是呈现在我的html.But我如何解决这个错误? – wotmn

相关问题