我如何提交带有 <a> 的表单,该表单已创建附加内容
How can I submit a Form with <a> that Was Created Appending Stuff
这是我目前拥有的:
var popupContent = ''
function createMessage(msg,pl) {
return [
"<p>" + msg + "</p>",
"<form action='" + pl + "' method='post' accept-charset='utf-8'>",
"<ul class='cd-buttons no_margin'>",
"<li><a class='submit'>Yes</a></li>",
"<li><a class='popup-close'>No</a></li>",
"</ul>",
"</form>",
"<a class='cd-popup-close popup-close img-replace'>Close</a>"
].join('');
}
//Accept Employement Request
$('.popup1').on('click', function() {
employeeName = $(this).siblings('.js-employee-name').text();
var message = "Are you sure you want to hire <b>" + employeeName + "</b>?"
var postLink = "/hire-employee"
createMessage();
$(".cd-popup-container").append( createMessage(message, postLink) );
});
$('.submit').click(function(){
$('form').submit();
});
但这似乎不起作用。
那么当点击 class 提交时,我该如何提交由 createMessage 函数创建的表单?
非常感谢。让我知道我是否不够清楚。
我建议您使用 <button>
而不是锚点,并使用按钮的默认行为。
使用
<button class='submit'>Yes</button>
但是,解决您眼前的问题。
目前您使用的是 "direct" 绑定,它只会附加到您的代码进行事件绑定调用时页面上存在的元素。
Delegated events have the advantage that they can process events from descendant elements that are added to the document at a later time.
因为您正在动态创建元素。
您需要使用 Event Delegation. You have to use .on() 委托事件方法。
一般语法
$(staticParentElement).on(event, selector, eventHandler);
例子
$(".cd-popup-container").on('click', '.submit', function(event){
$('form').submit();
event.preventDefault(); //Cancel default behaviour of anchor
});
这是我目前拥有的:
var popupContent = ''
function createMessage(msg,pl) {
return [
"<p>" + msg + "</p>",
"<form action='" + pl + "' method='post' accept-charset='utf-8'>",
"<ul class='cd-buttons no_margin'>",
"<li><a class='submit'>Yes</a></li>",
"<li><a class='popup-close'>No</a></li>",
"</ul>",
"</form>",
"<a class='cd-popup-close popup-close img-replace'>Close</a>"
].join('');
}
//Accept Employement Request
$('.popup1').on('click', function() {
employeeName = $(this).siblings('.js-employee-name').text();
var message = "Are you sure you want to hire <b>" + employeeName + "</b>?"
var postLink = "/hire-employee"
createMessage();
$(".cd-popup-container").append( createMessage(message, postLink) );
});
$('.submit').click(function(){
$('form').submit();
});
但这似乎不起作用。
那么当点击 class 提交时,我该如何提交由 createMessage 函数创建的表单?
非常感谢。让我知道我是否不够清楚。
我建议您使用 <button>
而不是锚点,并使用按钮的默认行为。
使用
<button class='submit'>Yes</button>
但是,解决您眼前的问题。
目前您使用的是 "direct" 绑定,它只会附加到您的代码进行事件绑定调用时页面上存在的元素。
Delegated events have the advantage that they can process events from descendant elements that are added to the document at a later time.
因为您正在动态创建元素。
您需要使用 Event Delegation. You have to use .on() 委托事件方法。
一般语法
$(staticParentElement).on(event, selector, eventHandler);
例子
$(".cd-popup-container").on('click', '.submit', function(event){
$('form').submit();
event.preventDefault(); //Cancel default behaviour of anchor
});