2

テキストボックスへの入力を制限する必要があります。ページの読み込み時に、リピーターのテキスト ボックスには、リピーターのアイテムのカートン数量が自動入力されます。私はこのコードで OnItemCreated メソッドでこれを行っています:

txt.Text = DataBinder.Eval(e.Item.DataItem, "CtnQty").ToString();

私がする必要があるのは、デフォルト値よりも多くの値が選択された場合に、値が自動的に次の倍数に設定されるように、(できれば Javascript を使用して) 入力を再構築することです。それよりも小さい場合、入力された値はすべて受け入れられます。たとえば、デフォルトが 12 で 13 が入力された場合、これを 24 に自動修正する必要があります。11 が入力された場合、値は 11 のままです。

私は次のように Math.round 関数で遊んでいます:

<input type="text" onblur="this.value=Math.round(parseInt(this.value)/12)*12" />

しかし、動的な値を受け入れることができません。これを行うと、「サーバー タグの形式が正しくありません」という解析エラーが発生します。

<input type="text" onblur="this.value=Math.round(parseInt(this.value)/<%# DataBinder.Eval(Container.DataItem, "CTNQTY") %>)*<%# DataBinder.Eval(Container.DataItem, "CTNQTY") %>" />

そして、デフォルトより少ない場合は受け入れ、それ以上の場合は multiplt という問題が発生します。これには、より詳細な Javascript 関数が必要だと思いますが、Google で調べても、探しているものが見つかりません。どんなアイデアでも大歓迎です。

ありがとう

4

2 に答える 2

0

これはあなたの問題に対するhtml5 +純粋なjavascriptソリューションです -クロスブラウザと変更イベントの処理の将来の互換性のためにjQueryまたは機能検出を使用してください( blurに似ていますが、何かが変更された場合にのみ、フォームが表示される前にユーザーが押した場合に機能するはずです)提出されましたが、私はそれをテストしませんでした)enter

<input type="number" id="ctnQty" value="14" data-default-value="14">
<script>
    var changeHandler = function(e) {
        var defaultValue = e.target.dataset.defaultValue;
        var v = e.target.value;
        if (v > defaultValue) {
            v = (Math.floor(v / defaultValue) + 1) * defaultValue;
            e.target.value = v;
        };
    };
    document.getElementById("ctnQty").onchange = changeHandler;
</script>

UPDATE : 再利​​用可能な関数とローカル変数を使用したより一般的なソリューション

http://jsfiddle.net/Apriillion/CcQ6t/3/

于 2012-10-25T16:24:37.023 に答える
0

まず、ポストバックごとにデータをバインドしない限り、DataItem を使用するコードは ItemDataBound に配置する必要がありますが、これは必ずしも良い方法ではありません。

適切に形成されていないタグについては、 onblur に一重引用符を使用して、次のようなことを試すことができます。

<input type="text" onblur='this.value=Math.round(parseInt(this.value)/<%# DataBinder.Eval(Container.DataItem, "CTNQTY") %>)*<%# DataBinder.Eval(Container.DataItem, "CTNQTY") %>' />

js関数については、この例が役立つかもしれません(ところで:イベント処理にjQueryなどのライブラリを使用する方が良いオプションです):

http://jsfiddle.net/nqCGp/

<html>
    <body>

      <script>
            function verify(qty){
               return function(event){event.target.value=Math.round(parseInt(event.target.value)/qty)*qty;};
            }
              </script>
      <form>
              <input type='text' onblur="(verify(12))(event)"/>
              <input type='text' onblur="(verify(14))(event)"/>        
      </form>
    </body>
</html>
于 2012-10-25T15:37:15.820 に答える