先举个例:<form id="f1" action="" method="get">
    <input name="method" value="a"/>
</form>
上面这段代码,form表单里input对象的name值如果和form的属性值相同(例子是method属性),将不能通过JS代码修改form的属性了。<script type="text/javascript">
     document.getElementById("f1").method="post";
</script>这句JS代码将会报错,即使用jquery也无法修改method属性了。
用alert(document.getElementById("f1").method);发现打印出来的是[object]而不是"get"字符串,
alert(document.getElementById("f1").method.value);打印出来是"a",也就是那个input的值;
相当郁闷我把form表单的所有属性都打印出来看了一下,有两个method,而且都是method=[object]。
如果把input的name改成其他不冲突的值,则form表单的method属性正常显示为method=get。这个问题限制了form表单里面的input命名,实际项目碰到了,想破头也想不到在不改变input的name属性值的前提下地解决方案。
求大家讨论、支招~~~

解决方案 »

  1.   

    老师没教你在命名的时候,最好不要使用关键字?
    像:method action  这些词,你觉得应该拿做其它表单的name id使用么
      

  2.   

    给input元素加个ID
    document.getElementById直接取到input元素的ID去
      

  3.   

    回2楼:
    这不是老师的问题,是实际项目中的问题。我举例吧,我的项目集成第三方公司的登陆应用需要post给他用户名密码以及其他杂七杂八的参数,现在问题来了,他们的参数中有一个参数名就是method(他们要求method=login),我必须动态的向form表单组装input然后提交表单,也就不可避免的要组装出一个name为method的input