使用runat server textarea

时间:2016-01-22 22:26:06

标签: javascript c# asp.net twitter-bootstrap bootstrap-modal

我正在asp.net中开发一个页面。我有一个带有表单的Bootstrap模态。 bootstrap模式中的表单有一个文本框和一个textarea。 bootstrapModalView。  我正在使用javascript将文本框中的每个vin#添加到vin list textarea中,然后输入。

$(document).ready(function () {

    //In "Scan VINs," add VIN# to VIN List
    $('#modalForm').on("keypress", function (e) {
        //If "enter/return" is pressed, put vin# into vin list textarea
        if (e.which == 13) {
            enterModalTxtVIN();
            return false;
        }
    });

    //Hide invalidVIN div until error occurs
    document.getElementById('invalidVIN').style.display = 'none';
});

//(On Modal) After clicking "enter" on VIN# textbox, VIN# goes into VIN List text area
function enterModalTxtVIN() {
    var text = document.getElementById('modalTxtVIN').value;

    //If modalTxtVIN length does not = 17 characters, inform user incorrect length and cancel
    if (text.length != 17) {
        //Show error
        document.getElementById('invalidVIN').style.display = 'block';
        return false;
    } else {
        //Hide error
        document.getElementById('invalidVIN').style.display = 'none';

        //Add vin# to vin list text area
        document.getElementById('modalTxtAreaVINList').value += text.toUpperCase() + "\n";
        document.getElementById('modalTxtVIN').value = "";
    }
}

这很好很好,但我需要在后面的代码中访问textarea。所以我在我的textarea中添加了一个runat = server。

<textarea class="form-control" rows="5" id="modalTxtAreaVINList" name="modalTxtAreaVINList" runat="server" readonly ></textarea>

但是当我添加runat = server时,访问textarea的这行javascript会在我现在点击进入时关闭模态。

document.getElementById('modalTxtAreaVINList').value += text.toUpperCase() + "\n";

如何在不使用runat = server的情况下使模式不关闭,或者如何在没有runat = server的情况下从代码隐藏中访问数据?

1 个答案:

答案 0 :(得分:0)

添加runat=server后,您在JavaScript中看到的textarea的ID将不再是modalTxtAreaVINList。当ASP.NET处理.aspx / .ascx文件以生成HTML时,它将为服务器端控件 ClientIDs 生成新的ID。因此document.getElementById将无法找到您的文本框。

两种解决方案:

1)使用<%= modalTxtAreaVINList.ClientID %>在JavaScript代码中打印“真实”ID,即实际出现在HTML中的ID,例如

document.getElementById('<%= modalTxtAreaVINList.ClientID %>')

2)或者,将ClientIDMode="Static"添加到textarea,以强制ASP.NET输出您输入的相同ID。