0

在我们的应用程序中,我们最近采用了改进的 GUI 样式。最初,我们的表单提交链接类似于以下内容:

<input type=submit class="some-style" name="Command" value="Save" />

但是,我们正在尝试使用以下内容:

<input id='hiddenSaver' type="hidden" name="Command" value="Save" />
<a id='saveButton' href="#" class="some-style"><i class="some-icon"></i> Save</a>

<!-- SNIP: Extraneous other stuff -->

<script>
var $saveButton = $('saveButton'),
    $hiddenSaver = $('hiddenSaver');

$(document).ready(function () {
  $saveButton.click(function () {
    $saveButton.preventDefault();
    $hiddenSaver.submit();
  });
});
</script>

然而我们的表单并没有提交......事实上,他们只是什么都不做。我们缺少什么?

4

3 回答 3

1

您没有正确使用id 选择器并错过了#选择器中的前 id。

var $saveButton = $('#saveButton'),
$hiddenSaver = $('#hiddenSaver');

在表单对象上调用提交而不是在按钮上

$hiddenSaver.closest('form').submit();

或者

$hiddenSaver = $('hiddenSaver').closest("form");
$hiddenSaver.submit();
于 2013-02-01T17:36:39.343 回答
1

您正在.submit()输入字段而不是表单上调用。以下是 jQuery 文档的摘录:

当用户尝试提交表单时,提交事件被发送到元素。它只能附加到<form>元素上。<input type="submit">可以通过单击显式、<input type="image"><button type="submit">或在某些表单元素具有焦点时按 Enter来提交表单。

请参阅.submit()此处的 jQuery API 页面:

jQuery .提交()

尝试将 附加.submit()到您提交的表单。也不要考虑什么输入,他们建议提交表单。我不确定你是否可以用你的锚标签来做到这一点。你当然可以使用:

<button type="submit">Submit</button>

我知道你正在使用一个新的 GUI,但是通过一些 CSS 样式,你可以让按钮看起来很漂亮。

希望这可以帮助。

于 2013-02-01T17:43:37.100 回答
1

这个答案完全解决了发布的原始问题,包括一个工作演示......

标题:“通过 a href 标签提交”

您的代码存在以下几个问题...

1) 您的 jQuery ID 选择器缺少该#标志。

2)您未能将事件变量传递e.preventDefault()使用function(e)e.preventDefault()

3)submit()依附于form自身,而不是input元素。

我在下面更正了您的代码:

<form id="myform">
    <input id='hiddenSaver' type="hidden" name="Command" value="Save" />
</form>

<a id='saveButton' href="#" class="some-style"><i class="some-icon"></i> Save</a>

<!-- SNIP: Extraneous other stuff -->

<script>
var $saveButton = $('#saveButton'),
    $hiddenSaver = $('#hiddenSaver'),
    $myform = $('#myform');

$(document).ready(function() {
    $saveButton.click(function(e) {
        e.preventDefault();
        $myform.submit();
    });
});
</script>

工作演示:http: //jsfiddle.net/sBueS/

我在 jsFiddle 中包含了 jQuery Validate 插件,只是为了证明表单确实是使用submit()由锚标记触发的事件提交的<a>

于 2013-02-01T17:51:20.443 回答