【问题标题】:Call javascript function on this ASP.net webform on a button click?单击按钮在此 ASP.net 网络表单上调用 javascript 函数?
【发布时间】:2018-09-02 06:35:33
【问题描述】:

如何在单击按钮时在此 ASP.net 网络表单上调用此 javascript 函数?我在应用程序中添加了 .js 文件,但由于某种原因,按钮无法引用 .js 文件。我收到一个 Javascript 运行时错误,提示:divName 未定义。我究竟做错了什么?任何形式的帮助将不胜感激。谢谢!

Javascript 代码(文件为 check.js):

    var counter = 1;
    var limit = 20;

function addInput(divName) {

    if (counter == limit) {
        alert("You have reached the limit of adding " + counter + " inputs");
    } else {
        var newdiv = document.createElement('div');
        newdiv.innerHTML =
            "Dimension Type " +
            "<br><input type='text' name='myInputs[]'>" + "Dimension " +
            "<br><input type='text' name='myInputs[]'>";

        document.getElementById(divName).appendChild(newdiv);
        counter++;
    }
  return true;
}

ASP.Net 按钮代码:

          <p class="auto-style9">

        <script src="check.js" type="text/javascript"></script>

        <asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="Button" OnClientClick="return addInput(divName);" />


    </p>
    <p class="auto-style9">

【问题讨论】:

    标签: javascript html asp.net visual-studio


    【解决方案1】:

    将您的 JS 函数更新为 return truefalse 以防止回发并更改 OnClientClick 如下

    OnClientClick="return addInput('divDimensions');"
    

    在 ASPX 页面上更新 HTML,如下所示。

    <script src="check.js" type="text/javascript"></script>
    <div id="divDimensions"></div>
    <p class="auto-style9">
        <asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="Button" OnClientClick="return addInput('divDimensions');" />
    </p>
    

    在JS中遵循当前的webform格式更新else条件如下

    var table = document.getElementById("tableChecksheet");
    var row = table.insertRow();
    var cell1 = row.insertCell(0);
    cell1.className = "auto-style3"
    var cell2 = row.insertCell(1);
    cell1.innerHTML = "<h2>Dimension Type</h2>";
    cell2.innerHTML = "<br><input id='txtDimensionType" + counter + "' type='text' name='myInputs[]' style='width: 500px;'>";
    
    var row = table.insertRow();
    var cell1 = row.insertCell(0);
    cell1.className = "auto-style3"
    var cell2 = row.insertCell(1);
    cell1.innerHTML = "<h2>Dimension</h2>";
    cell2.innerHTML = "<br><input type='text' id='txtDimension" + counter + "'name='myInputs[]' style='width: 500px;'>";
    
    counter++;
    

    并在 HTML 中为您的主表提供一个 ID tableChecksheet,如下所示

    <table align="center" class="auto-style2" id="tableChecksheet">
    

    【讨论】:

    • 我按照你说的更新了代码,但是当我点击按钮时没有生成字段。有关我的代码的更新版本,请参见上面我的原始代码。我究竟做错了什么?我是否需要像 html 中那样的脚本行:?如果是,那么脚本将如何在 asp.net 中。我认为我不能使用 HTML 按钮。
    • 当然你需要引用你的脚本文件,你可以像你提到的那样做 HTML
    • 所以我引用了脚本,但它仍然无法正常工作。我完全糊涂了。它给了我以下错误:JavaScript 运行时错误:无法获取未定义或空引用的属性“appendChild”。
    • 你能用 ASPX 页面的完整 HTML 更新问题吗
    • 成功了!太感谢了!有什么方法可以将在这些生成的字段中输入的值传输到 SQL 服务器?
    【解决方案2】:

    你应该只指定函数调用,没有javascript:前缀:

    OnClientClick="addInput(divNAME);"
    

    还有一些可能需要您注意的事情:

    • 必须存在一个全局的javascript变量divNAME,并且值合适,因为在上面的js调用中用到了。
    • 您在函数addInput(...) 内部定义了一个局部变量counter,但该变量超出范围并在每次函数结束时丢失其值。为了使其保持其值,您需要在函数addInput(...)外部 声明它。然后,您可以在 js 函数中增加其值等。

    【讨论】:

    • 感谢您的回答,彼得! divName 的值可以是什么?我移动了 var counter = 1;变量限制 = 20;上面的功能并更改了 OnClient 但按钮仍然不起作用。
    • 这是您希望在其中创建新元素的页面上的 &lt;div&gt; 的 ID,这完全取决于您。
    • 如何改变div的值?这是我的第一个 Javascript 代码,我真的很困惑。另外,为什么单击按钮时没有生成字段?赞赏!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-12
    • 1970-01-01
    • 2011-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多