Javascript 更改表单的输入值并使用jQuery提交

Javascript 更改表单的输入值并使用jQuery提交,javascript,php,jquery,html,forms,Javascript,Php,Jquery,Html,Forms,我有以下HTML代码: <html> <!-- assume jquery is loaded --> <body> <form id="sform" method="get" style="display:none;"> <input type="hidden" name="eid" /> <input type="hidden" name="returnURL" />

我有以下HTML代码:

<html>
<!-- assume jquery is loaded -->
<body>
    <form id="sform" method="get" style="display:none;">
        <input type="hidden" name="eid" />
        <input type="hidden" name="returnURL" />
        <input type="hidden" name="returnID" value="ieid" />
        <select id="dropdownlist" name="ieid">
            <option selected="selected"></option>
        </select>
    </form>
</body>
</html>
当用户点击主页上的
login
按钮时,会检索到该信息。此按钮触发一个
POST
请求,该请求检索结果并将JSON解析为上面的表单。然后,在提交表单之前,我从原始代码更改表单的值以及表单本身的操作。如下所示

$.post('/?c=controller&a=method', {'email' : $('input[name="email"]').val() }, function(data){
    var result = $.parseJSON(data);
    $('#sform').change_action(result.get_action);
    $('input[name="eid"]').change_val(result.eid);
    $('input[name="returnURL"]').change_val(result.return_url);
    $('select[name="ieid"]').find('option:selected').change_val(result.option_url);
    $('#sform').submit();
};
其中
change\u val()
change\u action()
的定义如下:

$.fn.change_val = function(v){
    return $(this).val(v).trigger("change");
}

$.fn.change_action = function(v){
    return $(this).attr('action', v).trigger("change");
}
我之所以定义这些函数,是因为最初我只是调用了
val('newvalue')和表单似乎根本没有更新。我读到,在提交表单之前使用jQuery更新表单时,我必须触发一个更改

但是,即使触发了更改,HTML似乎仍然没有更新(至少在Chrome中是这样),表单也没有正确提交,因为没有任何值实际发生更改


因此,我需要能够获取解析结果,更新表单中的值(使用特定id),然后提交表单,使其重新定向到某个地方。有没有办法正确执行此操作?

当您定义
change\u val
change\u action
时,
绑定到(大概)窗口。当您调用它们时,您将希望将它们绑定到适当的对象。。。。或者只需执行
$('#sform').val(result.get_action).change()
@Tibrogargan-hmm执行类似
$('#sform').attr('action',result.get_action.).change()
的操作(在更新每个输入的属性值,然后调用
.change()
)之后)似乎无法正常工作。调用
.change()
后,我应该能够打开HTML检查器并查看这些更改的值,对吗?我现在没有看到任何东西,表单似乎没有提交任何信息:(此代码是否在
$.post
函数之外工作?尝试将其用于一些非变量值并在此处发布结果:)@ChristianValentin Yep,以前表单有硬编码值,当用户点击按钮时,
$(“#sform”)已调用.submit()
。这是可行的,但出于安全原因,我们不想把URL留给每个人看。这就是我们返回它们的原因。不知道您正在使用什么浏览器,但在chrome中执行此操作:
$('#按钮')。单击(function(){$('#form').attr('action',“new value”).change()按预期工作
$.fn.change_val = function(v){
    return $(this).val(v).trigger("change");
}

$.fn.change_action = function(v){
    return $(this).attr('action', v).trigger("change");
}