2012-05-10 138 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」'中放了雙引號'! –