asp:textbox Uncaught TypeError: Cannot read property 'va

本文关键字:va property Cannot textbox Uncaught TypeError asp read | 更新日期: 2023-09-27 18:18:17

我得到这个错误,所以我的更新按钮不工作,我没有更新我的数据库进度,因为这个错误。我想让文本框可见我试着用。cs side

这个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。TypeError: Cannot read property 'value' of undefined error

 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;
        }

asp:textbox Uncaught TypeError: Cannot read property 'va

假设问题不在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。这意味着即使在元素[0]上没有任何内容,它的值也是未定义的。在未定义的值上尝试获取属性或调用方法会导致您看到的异常。

正如所建议的副本所建议的那样,你方应该防范这种情况。一种可能的方法是引入效用函数:
// 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');

将解决未捕获类型错误。这取决于你提出合理的默认值。

将文本框设置为Visible = false使其不在html中呈现。因此,当您尝试在javascript中获取值时,它实际上不存在,使其成为undefined

要解决这个问题,要么用隐藏字段替换文本框,要么改变不透明度,使文本框在那里但透明