jQuery更改选择值时触发的函数?

时间:2013-08-19 16:14:43

标签: php javascript jquery

大家好。所以我正在努力研究这个简单的jQuery程序,它只在选择值发生变化时触发函数。一旦我开始工作,我计划在一个更复杂的程序中使用这个简单的函数。

这是代码(它来自jQuery API网站,我稍微修改了它以尝试我想要发生的事情):

<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>change demo</title>
    <style>
        div {
        color: red;
        }
    </style>
    <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
</head>
<body>

    <select id="selector" name="sweets">
        <option>Chocolate</option>
        <option selected="selected">Candy</option>
        <option>Taffy</option>
        <option selected="selected">Caramel</option>
        <option>Fudge</option>
        <option>Cookie</option>
    </select>
    <div></div>

    <script>
    $( "#selector" )
        .on('change',(function () {
            $( "select option:selected" ).each(function() {
                <?php header("Location:jcue.php")?>
            });
        })
        .change();
    </script> 
</body>
</html>

我想要发生的是,一旦选择输入值被更改,页面应该只重定向到jque.php。但是程序中发生的事情是它自动重定向到另一个页面,甚至没有加载当前页面本身。有什么问题? jQuery和Javascript在网络编程中对我来说是未开发的外国领域,我知道这对许多网络程序员来说都是非常基础的,但我只是需要它(当我得到它时我真的必须开始学习Javascript,AJAX和jQuery)空闲时间哈哈)。

我将要使用的复杂程序是一个搜索结果过滤程序。但在我能做到这一点之前,我必须让这个简单的程序工作。

任何人都可以帮助我吗?谢谢。答案将不胜感激。

4 个答案:

答案 0 :(得分:3)

试试这个::

$(function() {
    $("#selector").change(function() {
        location.href = "jcue.php";
    });
});

这将解决您的问题。

答案 1 :(得分:1)

问题是因为您的PHP会在页面加载后立即执行 - 您无法将其合并到javascript中。此外,您不需要处理程序中的each()。试试这个:

$("#selector").on('change',(function () {
    window.location.assign('jcue.php');
});

答案 2 :(得分:1)

JavaScript是客户端脚本,而PHP是服务器端。您正在尝试触发PHP标头重定向,该重定向应在服务器时间发送到客户端的浏览器之前。因此,在变更事件中,这不会起作用。

只需使用:

$("#selector").change(function() {
    window.location = "jcue.php"; //this can be URL as well
});

P.S。我注意到你有两个“选中”选项,请记住为什么?

答案 3 :(得分:0)

不太好的做法:使用Javascript重定向,因为JS可以被阻止

有一些语法错误,这是一个修复,只需替换你的代码。

$( "#selector" ).on('change',(function () {
    var str = "";
    $( "select option:selected" ).each(function() {
        window.location.replace("http://stackoverflow.com");
    });
}));

良好做法:使用jquery ajax请求Jquery Ajax或使用标准php header函数重定向(必须在加载html / js之前运行)

祝你好运,学习编程。这很有趣!