2012-03-26 2 views
2

は非常にシンプルで機能データを渡すために結合提出使用してイム:knockout.js基本的な結合の問題を提出

<form data-bind="submit: printTest"> 
    Enter a weight in the box: <BR> 
    <INPUT TYPE="text" id="inputWeight" VALUE=""><P> 
    <button type="submit">Submit</button> 
</form> 

私はちょうどので、私が出て、この入力をテストするための基本的な印刷機能を書くことだったKOで仕事を始めました:私は取得提出打ったとき

self.printTest = function(xxx){ 

     var myTextField = xxx; 
    if(myTextField.value != "") 
     alert("You entered: " + myTextField.value) 
    else 
     alert("Would you please enter some text?") 
    } 

私の問題は、「あなたが入力した:未定義」が、私はページを更新すると、フォームにある入力が警告を取得します。これは非常にイライラです!これがノックアウトの問題か単純なHTMLの場合はidk。

答えて

3

あなたはすべてのコードを示していないので、私はこれを上に基づいて答えようとします。最初にsubmit bindingは、フォームが送信されたときに関数を実行し、送信するフォームを停止/確認できるようにします。

送信時にフォームDOM要素が渡され、入力値が渡されないため、このコードは機能しません。

入力値を出力するには、まず入力値をモデルの値にバインドする必要があります。

<input type="text" id="inputWeight" value="" data-bind="value: inputWeight" /> 

このように警告することができます。

Heres the working fiddle

var viewModel = function() { 
    var self = this; 
    self.inputWeight = ko.observable(); 

    self.printTest = function() { 

     var valueEntered = self.inputWeight(); 
     if(valueEntered) { 
      alert("You entered: " + valueEntered); 
     } 
     else { 
      alert("Would you please enter some text?"); 
     } 
    } 
}; 

はFYI - あなたの最初のコード/マークアップは、私は、固定セミコロン間違ったマークアップが欠け、多少の誤差がありました。

これが役に立ちます。

+0

ありがとうございます!これは私の問題を解決しました!申し訳ありませんが、私はnoobのようですが、私はかなりJavaのスクリプトに新しいです。 koサイトの構文を使用していますので、構文入力にも感謝します! –

+0

問題ありません。私たちは皆どこかから始めなければなりません。 KOは通常のjsに比べて少し奇妙です。 – madcapnmckay