【问题标题】:Jquery to change a form's targetJquery更改表单的目标
【发布时间】:2012-01-07 20:50:38
【问题描述】:

我想根据选择的选项更改表单的目标。

<form id='post_form' target="targetvalue">

<select id="select" name="select">
<option value="option1">Option 1</option>
<option value="option2">Option 2</option>
</select>

    </form>


 <script>
 $("#select").change(function() {
    var targetvalue = $("#select option:selected").text();
    $("#post_form").attr("target", targetvalue);
    });

 </script>

【问题讨论】:

  • 你用的是什么版本的jquery?
  • 你的问题是什么?到目前为止,您说出了真相,这很好,但根本没有导致任何结果。
  • 我的标题中有这个:
  • @Martijn,如果您将代码放在ready 处理程序中,它“工作”会更好吗?

标签: jquery html forms target


【解决方案1】:
  1. 如果您想将target 设置为Option 1Option 2,您所拥有的是正确的。但是,如果您想将目标设置为option1option2,您应该:

    var targetvalue = $("#select option:selected").val();
    

    可以简化为;

    var targetvalue = $(this).val();
    
  2. 如果您使用 jQuery > 1.6,您应该使用 prop() 而不是 attr()。有关更多详细信息,请参阅 StackOverflow:.prop() vs .attr()

    $("#select").change(function() {
        var targetvalue = /* which ever you decide */;
        $("#post_form").prop("target", targetvalue);
    });
    
  3. 您不应该只链接到生产环境中的最新版本;如果新版本的 jQuery 发布时带有重大更改,那你就完蛋了。链接到特定版本的 jQuery,并在升级到新版本之前进行彻底测试;

    <script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
    
  4. 如果您&lt;form&gt; 元素之后定义&lt;script&gt; 以便能够定位它,请意识到您可以使用$(document).ready() 块在任何地方定义脚本;

    <script>
        $(document).ready(function () {
            $('#select').change(function () {
                var targetvalue = /* which ever you decide */;
                $('#post_form').prop("target", targetvalue);
            });
        });
    </script>
    

【讨论】:

    【解决方案2】:

    如果您的 HTML 页面确实是按照问题中指定的方式编写的,那么脚本将在使用您尝试修改的表单更新 DOM 后运行 - 但如果脚本是链接中的 JavaScript 文件的一部分,则您需要将其包含在 $(document).ready() 函数中 ....

    感谢@T.J.Crowder 链接以下文章 -> Document ready event ?

    将您的脚本放在 $(document).ready() 块中 - 这将确保 DOM 在尝试更改之前准备好:

    <script type="text/javascript">
      $(document).ready(function() {
         $("#select").change(function() {
           var targetvalue = $(this).val();
           $("#post_form").prop("target", targetvalue);
         });
      });
    </script>
    

    【讨论】:

    • 如果事情如问题所示,则无需。只要script低于文档源中的select 框,select 框就会在那里并且即使在jQuery 的ready 事件触发之前就可以访问。请参阅来自 Google 的 Closure 库工程师的 this message on the subject
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多