我有以下表单结构
<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>
这里&#34;动态生成名称&#34;是关键字段,它告诉要提交哪个元素或产品.. 我希望它将其转换为链接, 我试过了
<a href="#" onclick="document.getElementById('items-form').submit()" name="{dynamically generated name}">Add This </a>
它已提交但无法添加产品... 它还希望传递name参数,以便知道要添加哪个产品...... 卡住....:( 任何解决方案都赞赏......
答案 0 :(得分:2)
你应该<input type="submit"
。
无需执行JavaScript。
只需删除JS,然后根据需要添加<input type="submit"
个按钮。
GET / POST应该具有您要查找的键/值。
E.g。
<input type="submit" name="item1" value="submit" />
当您点击它时,收件人会收到(抱歉PHP在这里使用):
$_GET['item1'] = submit
和其他提交没有价值。
答案 1 :(得分: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
});
});
答案 2 :(得分: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();
很容易。这将创建表单的字符串,并将其与请求一起发送。