-1

フォームを投稿すると、タイトルの検証のみが機能し、他の 2 つのフィールドは検証されません。

HTML

<form name="qaform" class="nice" method="POST" onsubmit="validateForm()" action="/ask/ask-question/">

            <input type="hidden" id="id_selected_tags" name="tags">
            <p>
                <label for="id_title" class="inline-block">Title</label>
                <input type="text" class="input-text inline-block" id="id_title" name="question_title">
            </p>
            <span id="error_title"></span>

            <textarea id="id_question" name="question_description" class="full-width"></textarea>
            <span id="error_body"></span>
            <p>
                <label for="id_tags" class="inline-block">Tags</label>
                <input type="text" id="id_newstagbox" name="question_tags"/>
            </p>
            <span id="error_tags"></span>

            <button class="btn btn-success" type="submit">Post your question</button>
</form>

JS

function validateForm()
{
//title validation

if (document.qaform.question_title.value == "") {
     document.getElementById('error_title').innerHTML="*Please add a title*";
      return false;
 }


//body validation
if (document.qaform.question_description.value == "") {
     document.getElementById('error_body').innerHTML="*Please add a description*";
     return false;
}

//tag validation
if (document.qaform.question_tags.value == "") {
     document.getElementById('error_tags').innerHTML="*Please add a description*";
     return false;
}

}

フォームを送信した後、タイトルが存在する場合は正常に投稿されます。

私の質問にはほとんどコードが含まれているため、テキストを追加するように常に言われます.質問についてより多くの情報を提供することは良いことだと思いますが、質問をすることなくいくつかの単語で質問できる場合があります.範囲が広すぎると、FORM VALIDATION に合格するためにそれについて暴言を吐かなければなりません。

4

7 に答える 7

1

return false以下のように.modifyを削除するだけです

<script>
function validateForm()
{
var x=document.forms["myForm"]["fname"].value;
var y=document.forms["myForm"]["farea"].value;
var z=document.forms["myForm"]["ftag"].value;
if (x==null || x=="")
  {
   document.getElementById('ern').innerHTML="*Please add a title*";

  }
if (y==null || y=="")
  {
   document.getElementById('era').innerHTML="*Please add a desxription*";

  }
if (z==null || z=="")
  {
   document.getElementById('ert').innerHTML="*Please add a tag*";

  }
}
</script>
于 2013-11-15T06:52:48.673 に答える
0

if 句の「return false」を削除します。これにより、関数が停止し、他のif句が呼び出されなくなります。

于 2013-11-15T06:51:15.887 に答える
0

validateform() の前に「return」キーワードを追加するだけです

このような

<form name="qaform" class="nice" method="POST" onsubmit="return validateForm()" action="/ask/ask-question/">
于 2013-11-15T06:52:48.583 に答える
0

次の 5 つの小さな変更を validateForm メソッドに加えてみてください -

function validateForm() {
  var valid = true; // 1
  //title validation
  if (document.qaform.question_title.value == "") {
     document.getElementById('error_title').innerHTML="*Please add a title*";
     valid = false; // 2
  }

  //body validation
  if (document.qaform.question_description.value == "") {
     document.getElementById('error_body').innerHTML="*Please add a description*";
     valid = false; // 3
  }

  //tag validation
  if (document.qaform.question_tags.value == "") {
     document.getElementById('error_tags').innerHTML="*Please add a description*";
     valid = false; // 4
  }
  return valid; // 5
}
于 2013-11-15T06:53:46.533 に答える
0

私はjQueryを使用することを好みます:

$('#form').submit(function(e) {
        var validated = true;
        e.preventDefault();

        //title validation
        if ($('#id_title').val() == "") {
            $('#error_title').html("*Please add a title*");
            validated = false;
         }

        //body validation
        if ($('#id_question').val() == "") {
            $('#error_body').html("*Please add a description*");
            validated = false;
        }

        //tag validation
        if ($('#id_newstagbox').val() == "") {
            $('#error_tags').html("*Please add a description*");
            validated = false;
        }

        if(validated) {
            $(this).unbind('submit').submit();
        }
    });
于 2013-11-15T06:48:40.900 に答える
0

return false内部の各条件を 削除するだけです。 return false 行を削除すると、このjsfiddleがどのように機能するかを確認してください。

注:falseを返すと、そこで実行が停止します

于 2013-11-15T06:40:40.543 に答える