有什么理由不起作用吗?

时间:2009-09-02 01:10:12

标签: php javascript jquery

一个简单的HTML表单:

<form enctype="application/x-www-form-urlencoded" method="post" action="/view/album/id/4"><ol>
<li class="no-padding"><div class="element">

<input type="hidden" name="media" value="" id="media" /></div></li>
<li class="no-padding"><div class="button">
<input type="submit" name="add_to_favorites" id="add_to_favorites" value="Add To Favorites" /></div></li></ol></form>

JQuery的:

$('#add_to_favorites').hover(function() {
    var id = 10;
    // alert(id);
    $('#media').val(id);
});

这基本上意味着当您将鼠标悬停在表单的提交按钮上时,jQuery会将10设置为#media隐藏字段的值。

当我点击提交按钮时,隐藏字段返回NULL:

var_dump($_POST);
// this will return:
// array(2) { ["media"]=>  NULL ["add_to_favorites"]=>  NULL }

编辑:

我使用alert()测试了“var id”和隐藏字段值的值,并且它们已正确设置。

EDIT2:

页面上也有一个click()事件,这里是完整的代码:

$(document).ready(function() {
    $('.box-content2 a').click(function() {
        var path = $(this).attr('href');
        var title = $('img', this).attr('alt');
        var id = $(this).attr('id');
        $('#media-photo img').attr('src', path);
        $('#media-photo img').attr('alt', title);
        $('#media-photo img').attr('id', id);
        return false;
    });

    $('#add_to_favorites').hover(function() {
        var id = 10;
        $('#media').val(id);
    });
});

2 个答案:

答案 0 :(得分:1)

您应该为悬停事件定义两个函数。一个用于鼠标悬停,一个用于鼠标悬停。所以你的悬停事件将如下所示:

$('#add_to_favorites').hover(function() {
    var id = 10;
    // alert(id);
    $('#media').val(id);
}, function() {
    // Probably do nothing here.
});

也许你最好不要绑定到mouseover事件?

答案 1 :(得分:1)

原因是Val()只获取第一个匹配元素的输入值,因此您不能使用它将单个属性设置为值,要在匹配元素上设置属性,请使用attr函数,如此attr (关键,价值)

更多详细信息请检查thisthis