不提交通过DOM创建的<input />的值

时间:2013-11-08 15:58:59

标签: javascript php forms

我正在进行前端编辑并得到这行代码

<span onclick="var input = document.createElement('input'); input.setAttribute('value', this.firstChild.nodeValue); input.setAttribute('name', 'ac'); input.setAttribute('onblur', 'document.getElementById(\'front11\').submit();'); this.parentNode.replaceChild(input, this);">2015104015</span>

这导致了这一行

<input value="2014102016" name="ac" onblur="document.getElementById('front11').submit();">

在DOM更改后,完整表单如下所示

<form id="front11" action="/index.php" method="post">
<input type="hidden" name="id" value="3394" />
<input value="2014102016" name="ac" onblur="document.getElementById('front11').submit();">
</form>

表单已正确提交,但仅提交“id”,而不是“ac”。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

您需要指定 type

将其设为

<input type="text" value="2014102016" name="ac" onblur="document.getElementById('front11').submit();">

答案 1 :(得分:0)

将事情拆分出来,看看你的错误控制台在这一点上说了什么:

(顺便说一句:setAttribute并没有被完全打破,但它确实没有做到每个人都认为它做的事情。属性和属性是两个不同的东西 - 这就是为什么有两个不同的名字。)

警告:输入袖口

<script>
function do_it(el) {
  function submitIt() {
    this.form.submit();
  }

  var input = document.createElement('input');
  input.value = this.firstChild.nodeValue;
  input.name = 'ac';
  input.onblur = submitIt;    
  el.parentNode.replaceChild(input, el);"
}
</script>

<span onclick="do_it(this)">2015104015</span>