0

我有以下表单结构

<form action="{Basket-Addproduct}" method="post" id="items-form">
    <button class="button-text button-gray-custom" type="submit" value="Submit" name="{dynamically generated name}"><span>Submit</span></button>
</form>

这里“动态生成的名称”是告诉要提交哪个元素或产品的关键字段。我希望它把它转换成链接,我试过以下

<a href="#" onclick="document.getElementById('items-form').submit()" name="{dynamically generated name}">Add This </a>

它被提交但无法添加产品......它期望名称参数也被传递,因此它知道要添加哪个产品......卡住......:(任何解决方案表示赞赏......

4

3 回答 3

2

你应该有<input type="submit"

无需执行 JavaScript。

只需删除 JS,然后拥有任意数量的<input type="submit"按钮即可。GET/POST 应该具有您要查找的键/值。

例如

<input type="submit" name="item1" value="submit" />

当您单击它时,收件人会收到(抱歉这里使用了 PHP):

$_GET['item1'] = submit

和其他提交没有价值。

于 2013-11-14T09:37:26.200 回答
0

您可以使用 jQuery 干净而轻松地做到这一点。

所以,这是你的链接:

<a id="form-submit-btn" href="#" name="{dynamically generated name}">Add This</a>

你的表格:

<form action="{Basket-Addproduct}" method="post" id="items-form">
    <!-- form contents -->
</form>

现在编写一个 JavaScript,通过单击按钮提交表单数据:

$('#form-submit-btn').click(function(e) {
  e.preventDefault();
  var $form = $('#items-form');
  $.post($form.attr('action'), $form.serialize(), function(data){
    // do something with the data
  });
});
于 2013-11-14T09:47:40.183 回答
0

您的代码应该可以工作,我创建了一个示例供您测试,这里是:http: //jsfiddle.net/afzaal_ahmad_zeeshan/yFWzE/

<form id="form">
  <input type="text" name="something" id="something" />
</form>
<a href="#" onclick="document.getElementById('form').submit();">Submit</a>

通过使用它,您将使用它的 id 提交表单。其他用户告诉您使用 jQuery,恐怕您不想这样做。在您使用的 jQuery中,.preventDefault但如果您想坚持使用简单的 JS,那么您将使用href="#"它将自动阻止任何锚标记的执行。

并且可以检查请求的结果,遗憾的是这是一个错误。但它确保请求已发送到服务器。

if else然后,您可以通过将一些块设置为来测试方法和其他类型的执行

if(condition == true) {
  // if post
} else {
  // if get
}

该参数可能在服务器端处理不当,因为提交表单时,您需要从 QueryString 中取出数据(请求为 GET)。所以,你需要检查一下,或者如果这不是问题,那么确保你正确地指向了元素。否则,如果没有这样的元素,则不会发送任何内容。

我不确定您使用的是哪种语言,但这里是 ASP.NET 的代码

var value = Request.QueryString["something"];

上面已经存在 PHP 版本。这一切都取决于您随请求发送的参数。您更有可能将代码转换为函数。如

<a href="#" onclick="submit()">Submit</a>

和功能

function submit() {
  // create variable
  var value = document.getElementById("something").value;\
  // now submit the form and all that other bla bla, which 
  // you want to be process, 
}

如果您觉得这很棘手,请使用 jQuery

var values = $('form').serialize();

会很容易。这将创建一个表单字符串并将其与请求一起发送。

于 2013-11-14T09:56:04.053 回答