2011-06-28 9 views
3

javascript関数内からフォーム上のコンボボックスの内容にひげ剃り変数を割り当てようとしています。そのような:javascriptでひげ剃り変数を設定する

<script type ="text/javascript"> 
<!-- 
    function SomeFunction() { 

     var hours = document.getElementById("Hours"); 
     var task = document.getElementById("TaskType_ID"); 
     @{    
      var tsk = @:task.value;    
     } 

     @{    
     <text> 
      hours.value = '@ViewBag.TaskTypes.GetHours(tsk)'; 
     </text> 
     } 

     return true; 
    } 

//--> 
</script> 

ライン(と私が試した他のすべてのバリエーション)のエラーで

var tsk = @:task.value; 

結果。

+0

「かみそり変数」とは何ですか? – RobG

+1

ここでクライアント(javascript)とサーバー(asp.net/razor)テクノロジを混在させていますが、試しているフォームのようなものでは動作しません。ギャップをAJAXと橋渡しする必要があります。私はあなたが2つのコンボボックスを持っていると仮定して正しいですか?ユーザーがタスクコンボボックスからオプションを選択したときに時間コンボボックスのオプションを変更したいのですか? –

+0

@RobG Razorはasp.net mvc 3のページを作成するための最新の構文エンジンです。 –

答えて

1

Chrisが指摘したように、クライアントとサーバーのコードが混在しています。 javascriptはクライアントコードで、ajax呼び出し関数(get/post)を使用して、必要な値を返すためにサーバーからのデータが必要です。ここではそれについて何ができるかのスニペットコードは次のとおりです。

$("#tasks").change(function(){ 
    $.get('url',$(this).val(), function(data){ 
     // data is the hours returned from the selected task 
     $("#hours").val(data); 
    }); 
}); 

またはその代わりのタスクを選択し、サーバーの毎回の呼び出しを行う、あなたは常に変数のタスクの値を格納することができます。ありがとう

+0

ありがとうございます。私はこれを試してみんなにそれがどのように行ったかを知らせます。 – TomDW

1

大丈夫です。ここで私は何をして巻き終わったのですか?私はもはやオブジェクトをビューに渡しません。最初のフィールドの変更イベントにバインドしたスクリプトを追加し、コントローラでajax経由でアクションを呼び出し、結果を2番目のフィールドに配置しました。ように:

<script type="text/javascript"> 

    $(document).ready(function() { 
     $("#q").change(function() { 
      $.ajax({ 
       type: "GET", 
       url: "Home/Test?value=" + $('#q').get(0).value, 
       success: function(msg) { 
        $('#x').get(0).value = msg; 
       } 
      }); 
     }); 
    }); 

</script> 

正しい方向に私を導いてくれてありがとう。すべてのかみそりの構文で、私はこれがまだhtmlであるということを見失ってしまった。私は丸い穴に四角いペグを叩くのを見て楽しんでくれたことを皆さんに願っています!

関連する問題