我正在使用Zend Framework 1.12,我需要能够动态添加和删除子表单中的字段,在这种情况下,我们将超链接与父级“促销”相关联。
我还没有找到通过Zend动态添加和删除元素的方法,而且我发现声称这样做的罕见教程已有五十年历史,并且在我尝试时无效。
所以我正在做的是在Zend Hidden输入字段中存储我需要使用的链接,然后在提交后处理JSON数据。效率不高,但到目前为止,这是我唯一能做的工作。
以下是我正在使用的代码部分:
假设表格如下:
<form action="/promos/edit/promo_id/15" method="POST" id="form_edit">
<!-- input is Zend_Form_Element_Hidden -->
<input type="hidden" id="link_array" value="{ contains the JSON string }"/>
<button id="add_link">Add Link</button>
</form>
目的是每次按下“添加链接”按钮时,表单都会添加字段以允许用户输入将与特定项目关联的新超链接。
这是功能:
// add links
$('#add_link').click(
function(e) {
e.preventDefault();
link = '<div class="p_link new_link">' +
'<div class="element_wrap">' +
'<label for="link_name" class="form_label optional">Text: </label>' +
'<input type="text" id="new_link_name" name="link_name"/>' +
'</div>' +
'<div class="element_wrap">' +
'<label for="link_http" class="form_label optional">http://</label>' +
'<input type="text" id="new_link_http" name="link_http"/>' +
'</div>' +
'<div class="element_wrap">' +
'<button class="submit delete_link">Delete</button>' +
'</div>' +
'</div>';
$('#add_link').prev().after(link);
}
);
现在,我需要做的是在每个new_link类元素的提交中,获取链接名称和http引用并将其放在json对象中。这是我到目前为止的代码(我知道此时没有表示两个输入字段):
$('#submit').click(
function(e) {
e.preventDefault();
var link_array = [];
var new_links = document.getElementsByClassName('new_link');
$.each(new_links, function() {
console.log(this);
var n = $(this).children('#new_link_name').text();
console.log(n);
link_array.push({'link_name':n}); //'link_http':h
});
console.log(JSON.stringify(link_array));
}
);
我的问题是:var new_links = document.getElementsByClassName('new_link');
将收集所有新添加的new_link元素,但它不会提取已输入文本字段的任何值。
我需要知道如何将我输入的任何输入绑定到输入字段的value属性,因为现在我输入这些新元素的任何内容都会被抛出,当字段显示为空时,它就是空的。
答案 0 :(得分:1)
$('#submit').click(
function(e) {
e.preventDefault();
var link_array = [];
var new_links = $('.new_link');
$.each(new_links, function() {
console.log(this);
var n = $(this).find('input').val(); // you need input values! This line //is changed...
console.log(n);
link_array.push({'link_name':n}); //'link_http':h
});
console.log(JSON.stringify(link_array));
}
);
JSFIDDLE: http://jsfiddle.net/DZuLJ/
编辑:您不能拥有多个IDS(为每个输入和目标类创建类,如果您想要链接名称和http)