2012-05-10 110 views
2

在我看来,我想要两个按钮来填充表单的三个隐藏字段并提交它。它不工作,我不知道为什么。有任何想法吗?按钮调用javascript函数错误

我有以下代码:

<script language="javascript" type="text/javascript"> 
    function FillAndSubmit(thisid) { 
     $('input[name=First]').val(thisid); 
     $('input[name=Second]').val(@Model.ID); 
     $('input[name=Third]').val(@ViewBag.Something); 
     document.form.submit(); 
    } 
</script> 

一个有无形的领域的一种形式:

@using (Html.BeginForm(null, null, FormMethod.Post, 
         new { name = "form", id = "form" })) 
{ 
    @Html.Hidden("First") 
    @Html.Hidden("Second") 
    @Html.Hidden("Third") 
} 

和两个按钮:

<button class="Button" id="ButtonA" onclick="javascript:FillAndSubmit(this.id);"> 
    CaptionA 
</button> 
<button class="Button" id="ButtonB" onclick="javascript:FillAndSubmit(this.id);"> 
    CaptionB 
</button> 

如果我把里面的按钮表单的范围,它提交但没有填充隐藏的字段。所以,它只是不调用该函数。 Javascript正在同一应用程序的其他页面中工作。

新增:

生成的源:

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8" /> 
    <title>Title</title> 
    <link href="/Content/Site.css" rel="stylesheet" type="text/css" /> 
    <script src="/Scripts/jquery-1.5.1.min.js" type="text/javascript"></script> 
    <script src="/Scripts/modernizr-1.7.min.js" type="text/javascript"></script> 
</head> 

<body> 
    <script language="javascript" type="text/javascript"> 
     function Botao(thisid) { 
      $('input[name=First]').val(thisid); 
      $('input[name=Second]').val(41); 
      $('input[name=Third]').val(10/5/2012 1:58:02 PM); 
      document.form.submit(); 
     } 
</script> 

... 
Some div's with some text 
... 


<form action="/Controller/Action/" id="form" method="post" name="form"><input id="First" name="First" type="hidden" value="" /><input data-val="true" data-val-required="The DateTime field is required." id="Second" name="Second" type="hidden" value="10/5/2012 1:58:02 PM" /><input id="Third" name="Third" type="hidden" value="" /></form>   
    <button class="Button" id="ButtonA" onclick="javascript:Botao(this.id);"> 
     CaptionA 
    </button> 

    <button class="myButton" id="ButtonB" onclick="javascript:Botao(this.id);"> 
     CaptionB 
    </button> 

    </body> 
</html> 
+1

请向我们展示生成的来源。 – SLaks

+0

浏览器的JS控制台是否显示任何错误?您是否尝试删除'onclick'属性的'javascript:'部分,因为不需要?你有没有试过用'console.log'进行调试以查看函数是否被调用?你有没有试过直接从浏览器的JS控制台调用这个函数? – fguillen

+0

删除'javascript:'没有做任何事情。我现在将检查JS控制台。 –

回答

2

JQuery的.val(value)接受字符串或字符串数​​组,地方引号@Model.ID@ViewBag.Something

$('input[name=Second]').val("@Model.ID"); 
    $('input[name=Third]').val("@ViewBag.Something"); 
+0

它工作,我只是键入'“@ Model.ID”'和@“ViewBag.Something”'! –

+0

现在是完美的;) –

+0

谢谢,这里是有用的链接:http://api.jquery.com – Coder

3

这需要行情:

$('input[name=momentoDaConsulta]').val("10/5/2012 1:58:02 PM");

+0

但是这个日期是由Razor引擎产生的。该代码有一个'.val(@ ViewBag.Something)'。 –

+1

我不在乎生成它,生成的代码是错误的。它试图分割,然后在其他数字上失败(“SyntaxError:Unexpected number”)并且最后一个命令永远不会被调用 - 也就是巧合的是,“document.form.submit();” – Corkscreewe

+0

它的工作!我在'“@ Model.ID”'和'“@ ViewBag.Something”'中放了双引号'! –