我已在网络表单上预加载隐藏字段。单击jquery按钮时,这些隐藏字段将成功发送到控制器
<input type ="hidden" class="serviceslist " value="1"/>
<input type ="hidden" class="serviceslist " value="2"/>
我点击 addmore 按钮添加其他隐藏字段。单击jquery按钮时,不会将这些隐藏字段发送到控制器。可能是什么问题?他们不在dom中吗?
<input type ="hidden" class="serviceslist " value="3"/>
<input type ="hidden" class="serviceslist " value="4"/>
$('#addmoreservices').on('click', function () {
var url = "/Quotation/AddmoreServices/";
var serviceslist = $(".serviceslist ").serialize();
$.ajax({
url: url,
data: { serviceslist: serviceslist },
cache: false,
contenttype: 'application/json',
dataType: "json",
type: "GET",
success: function (data) {
return false;
},
error: function (reponse) {
alert("error : " + reponse);
}
这是我试图将一大堆隐藏字段(预加载和创建)发送到控制器的按钮代码。正在发送已预加载并且已创建的已被遗忘)
答案 0 :(得分:1)
您正在动态添加元素,因此在设置单击处理程序时不会注册该元素。 因此,一旦创建了动态元素
,就会调用事件处理程序您没有显示足够的代码,因此很难说出确切的解决方案,
答案 1 :(得分:0)
为字段添加唯一名称。不要反复使用相同的名称。
答案 2 :(得分:0)
如果您的输入有名称,则serialize()可以处理
<input type ="hidden" class="serviceslist " value="1" name="a" />
但如果您的所有输入名称都是“a”,则序列化结果为
a=1&a=2&a=3....
我认为这不是你想要的 也许你想要
1,2,3,4....
尝试使用
$(".serviceslist").map(function(){return $(this).val();}).get().join(",")
答案 3 :(得分:0)
尝试将'click'事件处理程序设为一个单独的js函数,如
$('#addmoreservices').on('click', addHandler)
var addHandler = function(){...};
然后在 addmore 按钮单击处理程序,将新输入添加到dom后,再次绑定addmoreservices按钮单击处理程序'addHandler'。这将包括'addHandler'函数中新创建的输入。