IE中JQuery和表单属性的变化

IE中JQuery和表单属性的变化,jquery,internet-explorer,Jquery,Internet Explorer,我想用JQuery更改表单属性。在其他浏览器中 它工作正常,但在IE(6,7,8)中不起作用 代码: 那有什么问题?非常感谢您的帮助。试试这个 $('#form1').attr("action","/controller/action/id/"); $('#form1').attr("target","upload_iframe"); $('#form1').attr("enctype","multipart/form-data"); 我刚刚试过这个,它在我的每个浏览器中都能正常工作 <

我想用JQuery更改表单属性。在其他浏览器中 它工作正常,但在IE(6,7,8)中不起作用

代码:

那有什么问题?非常感谢您的帮助。

试试这个

$('#form1').attr("action","/controller/action/id/");
$('#form1').attr("target","upload_iframe");
$('#form1').attr("enctype","multipart/form-data");
我刚刚试过这个,它在我的每个浏览器中都能正常工作

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script src="http://code.jquery.com/jquery-1.4.2.min.js" type="text/javascript"></script>

    <script type="text/javascript">
  $(document).ready(function() {
    $("#btn").click(function() {
     $('#form1').attr("action","/controller/action/id/");
     $('#form1').attr("target","upload_iframe");
     $('#form1').attr("enctype","multipart/form-data");

    });
  });
  </script>

</head>

<body>

<form id="form1" action="something.html" method="post" name="forma" target="target" enctype="nope">

     <a href="#" id="btn">Uno mas</a>  

</form>

</body>
</html>
试试这个

$('#form1').attr("action","/controller/action/id/");
$('#form1').attr("target","upload_iframe");
$('#form1').attr("enctype","multipart/form-data");
我刚刚试过这个,它在我的每个浏览器中都能正常工作

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script src="http://code.jquery.com/jquery-1.4.2.min.js" type="text/javascript"></script>

    <script type="text/javascript">
  $(document).ready(function() {
    $("#btn").click(function() {
     $('#form1').attr("action","/controller/action/id/");
     $('#form1').attr("target","upload_iframe");
     $('#form1').attr("enctype","multipart/form-data");

    });
  });
  </script>

</head>

<body>

<form id="form1" action="something.html" method="post" name="forma" target="target" enctype="nope">

     <a href="#" id="btn">Uno mas</a>  

</form>

</body>
</html>

您可能有一个名为“action”的字段:



IE重新启动浏览器后,会将这两个字段混在一起…

您可能会有一个名为“action”的字段:


IE重新启动浏览器后,将2个属性混在一起…

看来,jQuery attr()方法在IE8中不适用于enctype属性。例如:

f=$('<form>');
f.attr({"target":"ta","id":"idx"});//OK - FF and IE8
f.attr("method","post");//OK - FF and IE8
f.attr("enctype","multipart/form-data");//OK in FF, but not in IE8!!!
f=$('');
f、 attr({“target”:“ta”,“id”:“idx”})//OK-FF和IE8
f、 属性(“方法”、“职位”)//OK-FF和IE8
f、 属性(“enctype”、“多部分/表格数据”)//在FF中可以,但在IE8中不行!!!
IE8不通过上传发送文件内容。但有一个简单的解决方案:

f=$('<form enctype="multipart/form-data" />');//FF and IE8
f=$('')//FF和IE8
验证页面:

<html>
<head>
    <title>Example page for jQuery attr() bug - it can't set enctype attribute in form tag</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js" type="text/javascript"></script>

    <script type="text/javascript">
      $(document).ready(function() {
         //next two lines don't work in IE8, but they work in FF        
         f=$('<form />');
         f.attr("enctype","multipart/form-data");
         //comment two previous lines, uncomment next line and it work in IE8 
         //f=$('<form enctype="multipart/form-data" />');
         f.attr("method","post");
         f.append('<input type="file" name="ffile" id="ffile" /><input name="fsubmit" id="fsubmit" type="submit">'); 
         $(document.body).append(f);        

  });
  </script>
</head>
<body>
<p>
<?php
 if(@basename(htmlspecialchars($_FILES['ffile']['name'])))echo "Browser has sent a file ".$_FILES['ffile']['name'];
 else echo "Browser hasn't sent a file.";
?>
</p>
</body>
</html>

jQuery attr()错误的示例页面-无法在表单标记中设置enctype属性
$(文档).ready(函数(){
//接下来的两行在IE8中不起作用,但在FF中起作用
f=$('');
f、 属性(“enctype”、“多部分/表格数据”);
//注释前两行,取消注释下一行,它在IE8中工作
//f=$('');
f、 属性(“方法”、“职位”);
f、 附加(“”);
$(document.body).append(f);
});

对于enctype属性,jQuery attr()方法在IE8中似乎不起作用。例如:

f=$('<form>');
f.attr({"target":"ta","id":"idx"});//OK - FF and IE8
f.attr("method","post");//OK - FF and IE8
f.attr("enctype","multipart/form-data");//OK in FF, but not in IE8!!!
f=$('');
f、 attr({“target”:“ta”,“id”:“idx”})//OK-FF和IE8
f、 属性(“方法”、“职位”)//OK-FF和IE8
f、 属性(“enctype”、“多部分/表格数据”)//在FF中可以,但在IE8中不行!!!
IE8不通过上传发送文件内容。但有一个简单的解决方案:

f=$('<form enctype="multipart/form-data" />');//FF and IE8
f=$('')//FF和IE8
验证页面:

<html>
<head>
    <title>Example page for jQuery attr() bug - it can't set enctype attribute in form tag</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js" type="text/javascript"></script>

    <script type="text/javascript">
      $(document).ready(function() {
         //next two lines don't work in IE8, but they work in FF        
         f=$('<form />');
         f.attr("enctype","multipart/form-data");
         //comment two previous lines, uncomment next line and it work in IE8 
         //f=$('<form enctype="multipart/form-data" />');
         f.attr("method","post");
         f.append('<input type="file" name="ffile" id="ffile" /><input name="fsubmit" id="fsubmit" type="submit">'); 
         $(document.body).append(f);        

  });
  </script>
</head>
<body>
<p>
<?php
 if(@basename(htmlspecialchars($_FILES['ffile']['name'])))echo "Browser has sent a file ".$_FILES['ffile']['name'];
 else echo "Browser hasn't sent a file.";
?>
</p>
</body>
</html>

jQuery attr()错误的示例页面-无法在表单标记中设置enctype属性
$(文档).ready(函数(){
//接下来的两行在IE8中不起作用,但在FF中起作用
f=$('');
f、 属性(“enctype”、“多部分/表格数据”);
//注释前两行,取消注释下一行,它在IE8中工作
//f=$('');
f、 属性(“方法”、“职位”);
f、 附加(“”);
$(document.body).append(f);
});


通过以下方法(使用
编码
属性),成功获取跨浏览器(FF、IE7/IE8、Chrome)工作的
encytype
属性:


通过以下方法(使用
编码
属性),成功获取跨浏览器(FF、IE7/IE8、Chrome)工作的
encytype
属性:


IE中发生了什么?有错误吗?所有属性都没有改变,还是只有一些属性没有改变?顺便说一句,target已被弃用,不是吗?IE中会发生什么?有错误吗?所有属性都没有改变,还是只有一些属性没有改变?顺便说一句。target已弃用,不是吗?我花了很长时间才找到它,但这正是我的问题所在。我花了很长时间才找到它,但这正是我的问题所在。$(“#form1”)[0]。编码。。在我看来,这是一个更好的语法;但是是的,这适用于$('#form1')[0]。编码。。在我看来,这是一个更好的语法;但是是的,这很有效