你好&感谢您寻找
我有一个可编辑的Jquery表,当从最后一行跳出标签时会自动创建一个新行。该脚本复制了上一行,但更改了name和id字段中的行号。
newName 工作和更新很棒;
newId 工作和更新很棒;
我在一个重复的选择框的 onchange 属性中尝试相同的事情:
希望改变:
<select name="det[5][item]" onchange="getitemprice(this.value,5);">
要
<select name="det[6][item]" onchange="getitemprice(this.value,6);">
但是当我添加这行时Javascript一直在破碎:
newOne = elem.onchange.replace(/[0-9]+/i, config.formPos );
进入下面的addRow()函数!
function addRow() {
var tr = $(table).find('tr:not(.noedit):first').clone();
//console.dir(tr);
addFormPos();
if($(tr).find("input, select, textarea").length > 0) {
$(tr).find("input, textarea, select").each(function(index, elem) {
// Change the name of the fields
var newName = '';
var newId = '';
var newOne = '';
if(config.formPos !== '') {
newName = elem.name.replace(/\[[0-9]+\]/i, '[' + config.formPos + ']');
newId = elem.id.replace(/[0-9]+/i, config.formPos );
newOne = elem.onchange.replace(/[0-9]+/i, config.formPos );
}else {
newName = elem.name;
}
if(elem.type == 'checkbox' || elem.type == 'radio') {
$(elem).attr({'name': newName, 'checked': false})
}else {
$(elem).attr({'name': newName, 'id': newId, 'onchange': newOne});
}
$(elem)
});
$(tr).find("input:radio, input:checkbox").attr('checked', false);
}
我缺少什么?我怎样才能像newId和newName元素一样简单? 感谢大家的帮助,我相信你会觉得这很荒谬。
-Nic -
答案 0 :(得分:0)
不要使用内联事件处理程序使用像
这样的jQuery处理程序<select name="det[6][item]" class="myselect" data-formpos="5">
然后
jQuery(function($){
$(document).on('change', '.myselect', function(){
var value = this.value, formPos = $(this).data('formpos');
//your code
})
})
然后创建
elem.data('formpos', config.formPos );
如果您仍想使用内联处理程序,请尝试
$(elem).attr('onchange', 'getitemprice(this.value, ' + config.formPos + ');');
答案 1 :(得分:0)
我最终做了:
if($(elem).attr('onchange')){elem.setAttribute("onchange", 'getitemprice(this.value,' + config.formPos + ');');};
它允许我只搜索具有onchange事件的一个表单输入,任何onchange事件,并使用javascript设置它。无法弄清楚如何使用JQuery,因为每次我做
$(elem).attr('onchange',...
它会破坏javascript。我知道它不优雅,但我能让它发挥作用的唯一方法。 -Me -