C# “删除”按钮发送另一表单的值
我使用以下代码在for循环中创建多个不同的表单,以删除数据库中的不同值:C# “删除”按钮发送另一表单的值,c#,html,ajax,asp.net-mvc,forms,C#,Html,Ajax,Asp.net Mvc,Forms,我使用以下代码在for循环中创建多个不同的表单,以删除数据库中的不同值: @foreach (var item in Model.value) { <script>var temp = {'value' : '@item.name'}</script> <form class="formStyle" id="allCurrentNames_@item.name" method="post" ac
@foreach (var item in Model.value)
{
<script>var temp = {'value' : '@item.name'}</script>
<form class="formStyle" id="allCurrentNames_@item.name" method="post" action="">
<input type="hidden" id="part_name_@item.name" value="@item.name"/>
<button class="partDelete" onclick="deletePart(temp);return false;">Delete</button>
</form>
}
假设我将有如下内容:
Person Name1 [DELETE]
Person Name2 [DELETE]
Person Name3 [DELETE]
Person Name4 [DELETE]
Person Name5 [DELETE]
Person Name6 [DELETE]
如果我点击人名3,无论我点击哪个删除按钮,它都会发送人名6的值
非常感谢您的帮助!
谢谢你抽出时间 您的问题在于javascript中的这一行:
var personName = $("input#part_num").val();
由于在循环中呈现这些表单,因此将有多个输入字段,id为part_num
。JQuery将为您提供找到的第一个与选择器匹配的实例,这就是为什么您总是发布第一人称的值
您可以通过找出事件来自哪种形式,然后选择正确的part\u num
来轻松解决此问题
var personName = $('#correct_form_id #part_num').val();
希望这有帮助
编辑:添加一些示例代码
一种方法是捕获表单提交并自己处理。例如:
$( "form" ).submit(function( event ) {
var personName = $(this).find('#part_num').val();
// Do what you want with this information
// prevents the form from posting, if that is desired
event.preventDefault();
});
现在,页面上可能有其他表单不希望被此处理程序捕获,因此可以向循环中生成的表单添加一个类,以验证是否只捕获了正确的事件。那么您的定义如下所示:
$('form.some_class').submit(function(event)) {
...
});
一个简单得多的操作可以是为每个人的名字设置一个唯一的id。您只需要替换两行代码。 生成表单时,请替换:
<input type="hidden" id="part_name" value="@item.name"/>
<button class="partDelete" onclick="deletePart();return false;">Delete</button>
function deletePart() {
var personName = $("input#part_num").val();
为此:
<input type="hidden" id="part_name_@item.name" value="@item.name"/>
<button class="partDelete" onclick="deletePart(@item.name);return false;">Delete</button>
function deletePart(id) {
var personName = $("input#part_name" + id).val();
从html中删除javascript
@foreach (var item in Model.value)
{
<form class="formStyle" id="allCurrentNames_@item.name" method="post" action="">
<input type="hidden" id="part_name_@item.name" value="@item.name"/>
<button class="partDelete">Delete</button>
</form>
}
$('.partDelete')。单击(函数(){
var$this=$(this);
var partnumber=$this.parent().find('input').val();
var dataString='partnumber='+partnumber;
警报(数据字符串)
返回false;
});代码>
删除
删除
删除
请参阅:我编辑了上述内容,以说明不同的部分编号id,但现在它总是发送要删除的最后一个人值…我也尝试添加下面提到的特定表单id,但它总是发送最后一个值我尝试了这一点,但出于某种原因,现在它总是获取最后一个表单中的值…我还为每个#part_num尝试了不同的id(例如:#part_num1,#part_num2#part_num3),但这也最终发送了最后一个值……ajax代码有关系吗?我有一个断点集来告诉我ajax部分中的变量只是发送要删除的值并重新加载页面?
@foreach (var item in Model.value)
{
<form class="formStyle" id="allCurrentNames_@item.name" method="post" action="">
<input type="hidden" id="part_name_@item.name" value="@item.name"/>
<button class="partDelete">Delete</button>
</form>
}
$('.partDelete').click(function(){
var $this = $(this);
var partnumber = $this.parent().find('input').val();
var dataString = 'partnumber=' + partnumber;
//ajax
return false;
});