Итак, опять же, я новичок в 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>
Вместо обработчика событий отправки вам нужно использовать обработчик события click - отправить событие для элемента формы, вы регистрируете обработчик элемента кнопки.
$(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();
});
});
Демо: скрипка
submit
можно использовать для HTMLFormElement, а не для button
Попробуй это:
$('#add').on('click', function(e) // <-- click instead of submit
{
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); // no need to wrapping with jQuery
});
Обработчик события клика неверен.
submit
событие посылается к элементу, когда пользователь пытается отправить форму. Он может быть присоединен только к элементам form
.
Изменить это
$('#add').on('submit',function(e)
чтобы:
$('#add').on('click',function(e)