0

検索フォームで 2 つの同じ入力を使用します。データの型付けを制御したい。たとえば、ユーザーは任意の間隔で時間または価格を入力します。2 番目の値は最初の値より大きくなければなりません。 ユーザーが2番目のフィールドに大きな値を入力できないようにする方法は?

日付:

@Html.TextBox( "date1", string.Empty, new { @class = "dateClass", type_datepicker = "true", @id = "datepicker" } )
@Html.TextBox( "date2", string.Empty, new { @class = "dateClass", type_datepicker = "true", @id = "datepicker2" } )

と価格:

@Html.TextBox( "price1", string.Empty, new { @class = "priceClass" } )
@Html.TextBox( "price2", string.Empty, new { @class = "priceClass" } )

date1date2は文字列、price1price2は double です。私の悪い英語でごめんなさい..

4

1 に答える 1

1

バックエンドコードが返すものと一致するように、これを微調整する必要があります

ここにはいくつかのオプションがあり、ユーザーがフォームを送信したとき、またはユーザーが入力をやめたときに検証できます。送信時はかなり簡単です

if ($('#second').val() > $('#first').val()){
      return false;
   }

日付を比較するには、これをチェックしてください

または、ユーザーが入力をやめたときにそれを行うことができます。この素晴らしい回答のおかげで、 これ を行うことができます

$(document).ready(function(){
var typingTimer;                //timer identifier
var doneTypingInterval = 1000;  //time in ms, 1 second for example

 //on keyup, start the countdown
$('#second').keyup(function(){
    typingTimer = setTimeout(doneTyping, doneTypingInterval);
 });

 //on keydown, clear the countdown
    $('#second').keydown(function(){
    clearTimeout(typingTimer);
  });

 //user is "finished typing," do something
  function doneTyping () {
     if ($('#second').val() > $('#first').val()){
      alert('cannot do that');        //take whatever action you need here
   }
  }
});

また、日付ピッカーについては、jQuery UI の datepickerを使用している場合、特定の日付範囲を無効にするように指定するオプションがあるため、それを使用して、最初の日付ピッカーの値よりも前のものを無効にすることができます (ただし、クライアント側のチェックだけです)。 、これがアプリケーションにとって重要な場合は、C# または使用している言語でバックエンド チェックも行う必要があります)

于 2012-08-17T10:00:31.237 に答える