访问DOM元素的实时值

时间:2011-07-10 16:10:48

标签: jquery

我有一个隐藏输入,它有一个默认值,可以根据与之关联的所选单选按钮的值进行更改。

因此,如果我选择第二个单选按钮,则js_file_path隐藏输入的值将更改为“/ shared”。很好,很容易,我有这个工作正常。

我的问题是当我尝试通过jQuery $("#js_file_path").val()获取js_file_path的值时,我总是在页面加载时获得隐藏字段的值。我如何获得其当前值?我知道live()处理程序及其目的,但不太确定如何在我试图将“js_file_path”的值作为函数参数传递的上下文中使用它。

感谢任何帮助。

编辑:

这是检测文件路径值已更改的代码。

<input type="hidden" id="js_local_file_path" value="local">
<input type="hidden" id="js_shared_file_path" value="shared">
<input type="radio" name="js_type_for_file_upload" value="local" checked>
<input type="radio" name="js_type_for_file_upload" value="shared">
<input type="hidden" id="js_file_path" value="local">

$("[name=js_type_for_file_upload]").live( "change", function(){
    switch( $(this).val() ){
        case "local":
            $("#js_file_path").val( $("#js_local_file_path").val() );
            // do other stuff
        break;
        case "shared": 
           $("#js_file_path").val( $("#js_shared_file_path").val() );
            // do other stuff
        break;
    }
});`

因此,当我选择第二个单选按钮并检查DOM时,我可以看到js_file_path的值已正确更改为“shared”。

然后我尝试继续进行一个函数调用,当单击一个带有“按钮”的按钮时,该函数调用包含js_file_path的值作为其参数。

$("#button").click( function(){ 
     a_name_of_a_function( $("#js_file_path").val() ); 
});

为了进行调试,我在a_name_of_a_function()中添加了一个警告提示,以输出其file_path参数的值。

function a_name_of_a_function( file_path ){
    alert( file_path );
    // other stuff
}

即使我选择了“共享”单选按钮,警报提示也会始终显示“本地”。

1 个答案:

答案 0 :(得分:0)

根据您的示例HTML,您甚至不需要进行切换:

$("input[name=js_type]").live( "change", function(){
    $("#js_file_path").val( $(this).val() );
});

工作示例:http://jsfiddle.net/AlienWebguy/2JrWM/2/ - 我只是将隐藏字段更改为文本字段,这样您就可以在不查看控制台的情况下看到它。

编辑:这是小提琴上的更新代码。工作正常:

$("input[name=js_type_for_file_upload]").live( "change", function(){
    $("#js_file_path").val( $(this).val());

});

$('#button').live('click',function(){
    alert($("#js_file_path").val());
});