0

私は自分の JavaScript クラスのフォームを作成していますが、その特定の部分で行き詰っています。別のバリデータ javascript ファイルがあり、html ファイルで関数を呼び出します。フォーム領域が入力されていない場合、すべての検証が機能します。私がやりたいことは、フィールドが空白のままの場合、検証に失敗し、そのフィールドに値を挿入することです。以下は、フォーム フィールド、html ページ内の JavaScript 関数、および外部バリデータ js ファイルの例です。

HTMLヘッドで関数を呼び出す:

function formvalidation(thisform) {
with (thisform) {
if (textbox_validation(first_name,"Please enter your first name.")==false)
{first_name.blur(); return false;};
if (textbox_validation(business_name,"Please enter your business. Please enter N/A if 
you do not have one.")==false) { business_name.focus(); return false; 
business_name.value=="N/A";};

外部 js バリデーター:

function textbox_validation(entered, alertbox) {
with (entered) {
if (value==null || value=="") {
  alert(alertbox);
  return false;
}
else {
  return true;
   }
  }
}

そのため、バリデーターは機能し、空のフィールドに焦点を当てていますが、一部のフィールドでは、検証が失敗した場合、または int が入力されていない場合に、特定の値を入力する必要があります。コードの business_name 行は、私がそれを機能させようとしたときのものです。どんな助けでも大歓迎です!

4

2 に答える 2

0

通常、アラートは使用しませんが、代わりにエラー メッセージをspanまたはdivの近くinputまたは の上部 (または下部) に配置しformます。さらに ( @Frits van Campenで言及されているように) 、代わりに次のようなものを使用することは 一般的に悪い習慣です。with

function textbox_validation(entered, errormsg) {
    var errbox = document.getElementById(entered.id + '-errors'); // just to prevent writing it twice
    // Note this requires the input to have an id, and the errer box's id to be the same with an '-errors' suffix.

    // Instead of using with, just acces properties normally
    if (!entered.value) { // The `!` "neggation" operater makes "falsy" values `true`
                      // "falsy" values include `false`, the empty string, `0`, `null`, `undefined`, `NaN` and a few others
        // Put the error message in the DOM instead of alerting it
        errbox.innerHTML = errormsg;
        return false;
    }
    else {
        // Wipe any previous error messages
        errbox.innerHTML = '';
        return true;
    }
}

フォームバリデーターについては、もう一度。使わないようにしましょうwith。また、値に「N/A」を代入しようとすると、代入演算子の代わりに比較演算子を使用し、次の値を返した後にそれを実行しました。

function formvalidation(thisform) {
    // just use the `!` "negation" operator
    if (!textbox_validation(thisform.first_name,
        "Please enter your first name."))
    {
        thisform.first_name.blur();
        return false;
    }
    if (!textbox_validation(business_name,
        "Please enter your business. Please enter N/A if you do not have one."))
    {
        thisform.business_name.focus();
        thisform.business_name.value = "N/A"; // for assignment, use `=`. `==` and `===` are used for comparison
        return false; // a return statement ends the function, make sure it's after anything you want to execute!
    }
}
于 2013-08-21T16:43:31.883 に答える
0

DOM を使用して、フィールドのプレースホルダーを設定します。このような。

 var myInput = document.getElementById('input1');
 myInput.placeholder = 'This validation has failed.';
于 2013-08-21T16:12:50.457 に答える