首页 文章

使用runat服务器textarea输入时,Bootstrap模式关闭

提问于
浏览
0

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

$(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会在我现在点击enter时关闭模态 .

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

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

1 回答

  • 0

    添加 runat=server 后,从JavaScript中可见的textarea的ID将不再是 modalTxtAreaVINList . 当ASP.NET处理.aspx / .ascx文件以生成HTML时,它将为服务器端控件ClientID生成新的ID . 所以 document.getElementById 将找不到您的文本框 .

    两种解决方案

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

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

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

相关问题