javascript - JQuery 不附加 html 表单

标签 javascript jquery html

所以,再说一次,我是 JQuery 的新手,但无论出于何种原因,当我单击“添加场景”按钮时,JQuery 都没有附加表单。它甚至没有到达涉及#add 的函数。我在 .on() 行上设置了一个断点,当我单击时它似乎无法识别它。

$(document).ready(function ()
{
    $('#add').on('submit',function(e)
    {
        var form = "<div class='form'>\
        <h3> Scenario </h3>\
        <form id='scenario'>\
            <div>Name: <input type='text' name='ScenarioName'> </div>\
            <div>Rate of Investment Return (While Working): <input type='number' name='Working'></div>\
            <div>Rate of Investment Return (Retired): <input type='number' name='Retired'></div>\
            <div>Desired Retirement Yearly Income: <input type='number' name='desiredInc'></div>\
            <div><input type='submit' value='Submit'></div>\
        </form>\
        <div><button id='add' type='submit'>Add Scenario </button></div>\
    </div>"
        $('body').append($(form));
        e.preventDefault();
    });
});
<body>
    <div class='form'>
        <h3> Basic Information </h3>
        <form id='basic'>
            <div>Year of Birth: <input type='number' name='YOB'> </div> 
            <div>Current Savings: <input type='number' name='CurrSav'> 
            </div>  
            <div>Expected Retirement Age: <input type='number' name='RetAge'></div>     
            <div>Life expectancy: <input type='number' name='LifeExp'>
            </div>  
            <div><input type='submit' value='Submit'></div> 
        </form>
    </div>
    <div class='form'>
        <h3> Scenario </h3>
        <form id='scenario'>
            <div>Name: <input type='text' name='ScenarioName'> </div>
            <div>Rate of Investment Return (While Working): <input type='number' name='Working'></div>
            <div>Rate of Investment Return (Retired): <input type='number' name='Retired'></div>
            <div>Desired Retirement Yearly Income: <input type='number' name='desiredInc'></div>
            <div><input type='submit' value='Submit'></div>
        </form>
        <div><button id='add' type='submit'>Add Scenario </button></div>
    </div>
</body>

最佳答案

而不是 submit event您需要使用 click event 处理程序handler - 提交事件适用于表单元素,您正在为按钮元素注册处理程序。

$(document).ready(function () {
    $('#add').on('click', function (e) {
        var form = "<div class='form'>\
        <h3> Scenario </h3>\
        <form id='scenario'>\
            <div>Name: <input type='text' name='ScenarioName'> </div>\
            <div>Rate of Investment Return (While Working): <input type='number' name='Working'></div>\
            <div>Rate of Investment Return (Retired): <input type='number' name='Retired'></div>\
            <div>Desired Retirement Yearly Income: <input type='number' name='desiredInc'></div>\
            <div><input type='submit' value='Submit'></div>\
        </form>\
    </div>";
        $(this).parent().before(form)
        e.preventDefault();
    });
});

演示:

$(document).ready(function() {
  $('#add').on('click', function(e) {
    var form = "<div class='form'>\
        <h3> Scenario </h3>\
        <form id='scenario'>\
            <div>Name: <input type='text' name='ScenarioName'> </div>\
            <div>Rate of Investment Return (While Working): <input type='number' name='Working'></div>\
            <div>Rate of Investment Return (Retired): <input type='number' name='Retired'></div>\
            <div>Desired Retirement Yearly Income: <input type='number' name='desiredInc'></div>\
            <div><input type='submit' value='Submit'></div>\
        </form>\
    </div>";
    $(this).parent().before(form)
    e.preventDefault();
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class='form'>
  <h3> Basic Information </h3>

  <form id='basic'>
    <div>Year of Birth:
      <input type='number' name='YOB' />
    </div>
    <div>Current Savings:
      <input type='number' name='CurrSav' />
    </div>
    <div>Expected Retirement Age:
      <input type='number' name='RetAge' />
    </div>
    <div>Life expectancy:
      <input type='number' name='LifeExp' />
    </div>
    <div>
      <input type='submit' value='Submit' />
    </div>
  </form>
</div>
<div class='form'>
  <h3> Scenario </h3>

  <form id='scenario'>
    <div>Name:
      <input type='text' name='ScenarioName' />
    </div>
    <div>Rate of Investment Return (While Working):
      <input type='number' name='Working' />
    </div>
    <div>Rate of Investment Return (Retired):
      <input type='number' name='Retired' />
    </div>
    <div>Desired Retirement Yearly Income:
      <input type='number' name='desiredInc' />
    </div>
    <div>
      <input type='submit' value='Submit' />
    </div>
  </form>
  <div>
    <button id='add' type='submit'>Add Scenario</button>
  </div>
</div>

关于javascript - JQuery 不附加 html 表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19133415/

相关文章:

html - 调整屏幕大小时向上移动 div

javascript - 如何为对象数组编写 firestore 查询过滤器?

javascript - jQuery : toggle footer, 将大小从#px 调整为 100% 宽度并返回

javascript - 如何在 Swiper Js 中更改幻灯片时禁用单击和触摸/鼠标拖动

javascript - 如何使用仅使用 jQuery 构建的单页应用程序实现路由

javascript - 动态插入数据时,highcharts 会更改系列颜色

javascript - 改变所有 previous sibling 姐妹和堂 sibling

javascript - × 类型错误 : Cannot set property 'props' of undefined

javascript - JavaScript 函数中的正则表达式问题 - 不替换任何内容

Javascript 平滑滚动仍然滞后