将数据传递给不同的函数

时间:2014-07-21 08:06:47

标签: jquery asp.net-mvc razor

我有一个带ID的字符串,我希望将视图中的字符串(取决于按下的按钮)传递给两个不同的函数。

我希望在隐藏输入中使用一个或两个带有字符串的表单。还有两个按钮:“做方法A”和“做方法B”。

我尝试用JQuery将字符串填充为两种形式,但只填充了第一个输入。我用$(".classname:first")$(".classname:last")尝试了它(由于某种原因,HTML帮助器忽略了我对类或id的修改)。

如何根据我按下的按钮调用不同的功能?

或者如何使用相同的类名填充两个单独的输入?

或者如何在JQuery中访问选择器的子节点?

2 个答案:

答案 0 :(得分:0)

按如下方式设置HTML

<form id="hidform" action="/" method="post">
    @Html.HiddenFor(m => m.str, "value=\"0\">
    <input id="method-a" data-action="methoda" type="submit" value="do method a">
    <input id="method-b" data-action="methodb" type="submit" value="do method b">
</form>

正如您所看到的,该操作未在我的表单上设置,看起来它只会发布到您的主页(这不是您想要的)。但是,如果您查看input代码,我已添加了数据属性data-action。数据属性不是此解决方案的要求,这只是我的偏好。然后是jQuery

$(document).ready(function() {
    $('#hidform input').click(function(e) {
        e.preventDefault();
        var action = $(this).data('action');
        $('#hidform').attr('action', action).submit();
    });
});

这会阻止提交按钮的默认操作,将data-action的值应用到表单的action属性,然后提交表单。

答案 1 :(得分:-1)

我在提交按钮和隐藏输入周围添加了一个div,插入了标记onmousemove="$(this).find('#str').val(ids)

就像那样:

@using(Html.BeginForm("MethodA", "XYZ", FormMethod.Post, "name=\"hidform\" id=\"hidform\"")) { <div onmousemove="$(this).find('#str').val(ids)"> <input type="submit" value="do method A"/> @Html.HiddenFor(m => m.str, "value=\"0\"") </div> } @using(Html.BeginForm("MethodB", "XYZ", FormMethod.Post, "name=\"hidform\" id=\"hidform\"")) { <div onmousemove="$(this).find('#str').val(ids)"> <input type="submit" value="do method B"/> @Html.HiddenFor(m => m.str, "value=\"0\"") </div> }