2012-05-10 15 views
2

私の見解では、フォームの3つの非表示フィールドに2つのボタンを設定して送信します。それはうまくいかず、理由を知ることができません。何か案は?ボタンを呼び出すjavascript関数のエラー

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

と2つのボタン:

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

私は内部のボタンを配置した場合

<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> 

Aは、目に見えないフィールドを持つフォームを持っている:

私は、次のコードを持っていますフォームの範囲を指定すると、非表示のフィールドにデータを入力することなく送信されます。したがって、関数を呼び出さないだけです。 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 "'に二重引用符を入れます! –

関連する問題