2012-05-01 8 views
2

フォームに2つの非表示の入力フィールドがあり、jqueryの検証ルールにリンクしています。これらは「グローバル」フォームルールの一種です(たとえば、複数のフィールドの合計が100%でないなど)。フォーム全体に適用されるメッセージを表示するために、フォームの上部に隠しフィールドを使用しています。jQueryの検証では、最初の隠された入力要素の検証のみですか?

彼らはこのように定義されています。ここでは

<input type="hidden" class="futuretotalsunder"/> 
<input type="hidden" class="futuretotalsrequired"/> 

は私のルール定義されています。あなたはそれのアイデアを得ることができます。最初のルールは、テキストボックスの束が合計で< 100までであるかどうかをチェックし、2番目のチェックで合計が0でないことを確認します。問題は、発生する唯一のものが、最初に隠された入力要素。第二のものは決して発火しない。どんな考え?

$.validator.addMethod("futuretotalsunder", function (val, element, params) { 
     alert("under"); 
     var total = 0; 

     $(".TransferPercentTextBox").each(function() { 
      total = total + parseInt($(this).val()); 
     }); 

     if ((total < 100) && (total != 0)) { 
      window.location.href = "#Top"; 
      return false; 
     } 
     else { 
      return true; 
     } 
    }, "Total percentage must equal 100%."); 

    $.validator.addMethod("futuretotalsrequired", function (val, element, params) { 

     var total = 0; 

     $(".TransferPercentTextBox").each(function() { 
      total = total + parseInt($(this).val()); 
     }); 

     if (total == 0) { 
      window.location.href = "#Top"; 
      return false; 
     } 
     else { 
      return true; 
     } 
    }, "Transfer amount must be greater than 0."); 
+0

問題はasp.netまたはmvcに関係していますか?あなたはそれを(おそらくそれはあなたのバックエンドの技術です)とタグ付けしましたが、問題はフロントエンドJSだけにあるようです。あなたが残した相互作用はありますか? –

+0

それは私のバックエンド技術でした。 (asp.net MVC)しかし、私はそれをタグ付けする方法がわからなかった。私はそれを理解し、以下で答えます。 –

答えて

4

私はそれを理解しました。問題は(奇妙なことに)私の入力要素に名前属性がないことでした。私はそれを追加した後、それは正常に働いた。

+0

名前属性を追加する場合+1。私にとっても同様の問題を修正しました。 – SausageFingers

+0

私の場合、名前のない2つの入力フィールドもありました。興味深いことに、名前のない作品は1つですが、2番目の作品は名前が必要です。だから私は入力#1には名前がなく、入力#2には名前があります。 –

関連する問題