当使用jQuery检查<radio>时,如何更改<form>的“action”?</radio> </form>

时间:2009-09-08 05:08:27

标签: jquery event-handling

<form action="1.html">
    <input type="radio" id="check1" name="check" />
    <input type="radio" id="check2" name="check" />
</form>

我想要实现的是:

选中“check2”时,将“action”值更改为“2.html”

选中“check1”时,将“action”值更改回“1.html”

4 个答案:

答案 0 :(得分:4)

这应该解决你的问题。

$(function(){
    $('#check1').click(function() {
        $(this).parent().attr('action', '1.html');
    });

    $('#check2').click(function() {
        $(this).parent().attr('action', '2.html');
    });
});

答案 1 :(得分:3)

虽然上面的答案是正确的,但你需要小心这样做。

例如,假设您单击check2。它改变了行动。您提交表单,或转到另一页。现在你点击后退按钮。

浏览器重新加载页面*,将表单的操作重置为HTML中给出的值。但!浏览器会记住表单字段中设置的先前值,因此仍然会选中check2而不会发生单击事件:无线电的状态与表单操作的状态不匹配。

为了避免这样的问题,您应该始终在页面加载时扫描表单值并更新依赖于它们的任何内容。

通常,您应该尝试执行单个操作,接收服务器端脚本决定要执行的操作,而不是动态更改操作。这可以避免上述错误,并在非JS UA上停止表单。

*:如果页面仍然在加载的页面DOM缓存中,它可能无法重新加载页面。

答案 2 :(得分:0)

以下内容应该有效:

$("#check1").click
(
  function()
  {
    $("form").attr("action", "1.html");
  }
);

$("#check2").click
(
  function()
  {
    $("form").attr("action", "2.html");
  }
);

答案 3 :(得分:0)

$('[name="abc"][value="abc"]').click(function () {

$(".test").attr("action", "http://localhost/test.php");

});


$('[name="def"][value="def"]').click(function () {


$(".test").attr("action", "http://localhost/test1.php");


});



<form name="form" class="test" action="http://localhost/test.php">   
<input type="radio" name="abc" value="abc" />   
<input type="radio" name="def" value="def" />   
</form>