1

我有一个表单,我只想提交已更改值的发布数据。

所以我一直这样做的方式是这样的:

function submit_form(){
var hd = [];
// hd is a big array that is defined here
// hd ['some id_number'] = 'some value'
// main function
for (var id_number in hd ){
    var x=document.getElementById(id_number).selectedIndex;
    var y=document.getElementById(id_number).options;
    selector_text = y[x].text;
    if (hd[id_number] == selector_text){
        $(id_number).remove();
    }
}
document.forms["my_form"].submit()
}

所以目标是如果选择器等于数组中的内容,则不要发布数据。

为此,我一直在执行删除功能。删除功能之前的一切都按预期工作。但是,当我查看发布数据时,我仍然会得到与 hd 中的值匹配的 id_numbers 的选定值。

有没有更好的方法来删除以防止它进入 POST 数据?id.parent.removeChild(id) 方法也不起作用。

4

1 回答 1

3

jQuery id 选择器应以 a 开头#,但您的似乎不是:

 $('#' + id_number).remove();

您的for-in循环应该是常规增量 for 循环,这是在 JavaScript 中迭代数组的正确方法。 for-in循环通常用于迭代对象属性而不是数组元素。

for (var i=0; i<hd.length; i++) {
  // Access hd[i] in the loop

  var x=document.getElementById(hd[i]).selectedIndex;
  var y=document.getElementById(hd[i]).options;

  selector_text = y[x].text;

  if (hd[i] == selector_text){
     $('#' + hd[i]).remove();
  }
}

由于除了该行之外,您在这里并没有真正使用 jQuery,因此纯 JS 版本是:

var removeMe = document.getElementById(hd[i]);
removeMe.parentNode.removeChild(removeMe);
于 2012-09-28T19:00:05.697 回答