0

説明: 最初のフィールドの値は YYYY-MM-DD です。ユーザーが値を削除して何も入力しない場合、「OK」ボタンは無効にする必要があります。ユーザーが値を削除して新しい値を入力すると、「OK」ボタンが有効になります。コードは 2 番目のケースでのみ機能します。

function ChangeOkButton()
   {
     if(document.getElementById('fromDate').value == null)
        {  document.getElementById('save').disabled = true;  }
     else {document.getElementById('save').disabled = false;  }
   }  

<input type="text" name="fromDate" id="fromDate" value="YYYY-MM-DD" onkeypress="ChangeOkButton();"/>

これは可能ですか?

ありがとうございました!

4

1 に答える 1

0

この関数は、'12345'、'foobar'、または現実的な値とは異なる何かで値を上書きする可能性があるため、この種の制御にはあまり役に立ちません。2000-01-01 から始まる日付が必要だと思います

function ChangeOkButton(field) {
   var okbtt = document.getElementById('save');
   if ((/^(YYYY\-MM\-DD|2\d{3}\-(0[1-9]|1[0-2])\-(0[1-9]|[12]\{d}|3[01]))$/).test(field.value)) {
      okbtt.removeAttribute('disabled');
   }
   else {
      okbtt.disabled = 'disabled';
   }
}  

そしてあなたの入力は

<input type="text" name="fromDate" id="fromDate" value="YYYY-MM-DD" onkeyup="ChangeOkButton(this);"/>

うるう年や月ごとの日数は考慮していないことに注意してください。これは、ユーザーが入力したデータ型をより確実に制御するためのものです。好きなように正規表現を変更してください

注: パフォーマンスの問題のために、'okbtt' 変数を関数の外部に配置することを検討してください。そうしないと、この関数を呼び出すたびに参照を取得する必要があります。最悪。

于 2010-10-06T13:30:32.100 に答える