web-dev-qa-db-ja.com

ページを送信する前にフォームフィールドの値を確認する

Start_dateフィールドが空でないかどうかをチェックし、送信ボタンがクリックされたときに適切なメッセージを表示する次の関数を記述しました。しかし、その後、前のページに制御を移します。そのため、ユーザーはそのフォームの他のすべてのフィールドを再度書き込む必要があります。他のすべてのフィールド値を使用して、エラーメッセージが表示された後でもそのページにとどまる方法はありますか?.

//JavaScript
function checkform() {
    if(document.frmMr.start_date.value == "") {
        alert("please enter start_date");
        return false;
    } else {
        document.frmMr.submit();
    }
}

// HTML
<html>
    <form name=frmMr action="page1.jsp">
        Enter Start date:
        <input type="text" size="15" name="start_date" id="start_date">
        <input type="submit" name="continue" value="submit" onClick="checkform();">
    </form>
</html>

前もって感謝します

13
reva

チェックフォームに戻り値がある場合、それはどこでも使用されていません。代わりにonclick="return checkform()"を使用してください。

どちらもボタンをクリックしても機能しますが、フォームタグ内でこのメソッドをonsubmit="return checkform()"に置き換えることを検討してください。

20
user11977

あなたは単純にstart_dateを必要とするようにすることができます

<input type="submit" value="Submit" required />

この場合、checkform()は必要ありません。

ありがとう

8
Ujwal Ratra

関数を呼び出す前にreturnを使用します。送信ボタンをクリックすると、2つのイベント(送信ボタンとonclickの関数呼び出しを使用した場合のフォームの投稿)が発生し、フォームの投稿を防止するためにfalseを返す必要があります。戻り値を指定する必要があります。つまり、関数からの値を期待するには、

これはコードです:

input type="submit" name="continue" value="submit" onClick="**return** checkform();"
0
nikhil reddy

確かではありませんが、送信中のようです。私の簡単な解決策はあなたを変更することです(あなたのコードをここで推測してください):

<input type="submit" value="Submit" onclick="checkform()">

ボタンに:

<input type="button" value="Submit" onclick="checkform()">

そうすれば、フォームはまだ(checkform()のelse部分から)送信され、ページを再読み込みすることはできません。

それを処理する他の、おそらくより良い方法がありますが、これは当面は機能します。

0
WSkid