-1

我在锚标记中使用 onclick 事件。当我单击锚点时,我正在调用一个 java 脚本函数,在该函数中更改一个输入元素的值并提交表单。该值已更改,但表单未提交该值。请帮助我。仅供参考,如果我创建一个元素并在提交之前添加到表单中,它就可以工作。为什么在第一种情况下不起作用。

<form name="form" >    
    <input type="hidden" name="input" value="test"/>    
    <a onclick='testMethod("test")'>click </a>    
</form>

使用的脚本是

function testMethod(value)
{
    if(serviceName != null && jQuery('#form') != null)
    {
        document.forms['form'].getElementById('input').value = value;
        document.forms['form'].action = jQuery('#newAction').val();
        document.forms['form'].submit();
    }
}
4

1 回答 1

1

这里的主要问题是你试图通过 id 访问输入,而它没有一组:

(添加id到表单和id输入中,以便我们可以轻松选择它们):

<form name="form" id="form">
    <input type="hidden" name="input" id="input" value="test" />
    <a onclick='testMethod("test")' >click</a>
</form>

以及要匹配的 javascript(更新以使用 jQuery 的选择器,因为您表示您有 jQuery 支持可用):

function testMethod(value)
{
    var form = $('#form');
    if(serviceName != null && form.length)
    {
        $('#input').val(value);
        form.attr('action', $('#newAction').val());
        form.submit();
    }
}

您还可以更新您的代码,这样您就不会在 DOM 中包含与 onclick 方法的绑定,而是直接在 javascript 中附加到它:

将元素更改a为具有 ID:

<form name="form" id="form">
    <input type="hidden" name="input" id="input" value="test" />
    <a id="submitLink">click</a>
</form>

javascript 现在看起来像这样:

$(document).ready(function() {
    $('#submitLink').on('click', function(event) {
        event.preventDefault();
        var form = $('#form');
        if(serviceName != null && form.length)
        {
            $('#input').val(value);
            form.attr('action', $('#newAction').val());
            form.submit();
        } 
    });
});
于 2012-11-04T07:43:24.157 回答