0

私のフォームは、送信を続行する前にフィールドに入力する必要がある HTML5 でセットアップされていますが、これは IE10 未満ではサポートされていないため、これらのブラウザーで空のフォームの送信が許可されていないことを確認する必要があります.. .

<form name="upload" method="post" action="send_form_email3.php" enctype="multipart/form-data">
    <div width="100%" class="con3">
        <div class="lable">
            <label for="first_name">First Name *</label>
        </div>
        <input  type="text" name="first_name" id="first_name" class="span4" required />

        <div class="lable">
            <label for="email">Email Address *</label>
        </div>
        <input  type="text" name="email" id="email" class="span4" required />

        <div class="lable">
            <label for="telephone">Contact Number *</label>
        </div>
        <input  type="text" name="telephone" id="telephone" class="span4" required />

        <div class="lable">
            <label for="comments">Why are you the fun, energetic person that we are looking for? *</label>
        </div>
        <textarea  name="comments" rows="8" id="comments" class="span4" required /></textarea>

        <div class="lable">
            <label for="upload">Send Us Your CV *</label>
        </div>
        <input type="file" name="upload" id="upload" required />

        <input type="submit" value="Submit" class="btn btn-success">
    </div>
</form>

IE10 未満でこの検証を処理するために (他に DOM に準拠していないブラウザーはありますか? 笑)、jquery をいくつか作成しました。

ほとんどの場合、以下は他のフォームで機能しますが、今回は、.each入力ごとに新しい if ステートメントを実行する代わりに、少し改善してコントロールをループしようと考えました。

$("form[name=upload]").submit(function() {
    // Internet Explorer uses a different call to stop form submission
    // so we need to determine which browser is being used.

    // DOM compliant browsers use HTML5 to do this.

    if ($.browser.msie)
    {
        ($("form[name=upload] input").each(function() {
            if ($(this).val() == "")
            {
                var target, errmsg;
                switch ($(this).attr("name"))
                {
                    case "first_name":
                        errmsg += "Please enter your name.\r\n";
                        break;
                    case "email":
                        errmsg += "Please enter your email address.\r\n";
                        break;
                    case "telephone":
                        errmsg += "Please enter a contact number.\r\n";
                        break;
                    case "comments":
                        errmsg += "Please tell us why you are the fun, energetic person that we are looking for.\r\n";
                        break;
                    case "upload":
                        errmsg += "Please upload your CV so that we can review it.";
                        break;
                }
                event.returnValue = false;
                alert(errmsg);
            }
        });
    }
});

私はあまり詳しく.each()ないので、自分が正しいかどうか確信が持てません。現在、このコードは引き続きフォームの送信を許可し、空のフィールドがあっても何も警告しません。

4

2 に答える 2

1

次のコードは機能しているようです:

  • 括弧と中括弧のある構文エラーを修正しました(textareaのマークアップにもダブルクローズ'/'があります)
  • jquery1.9以降サポートされていない$.browser.msieをnavigator.userAgent.match(/msie/i)(属性のサポートのテストrequiredがさらに良い場合があります)に置き換えました

    $("form[name=upload]").submit(function() {      
    // Internet Explorer uses a different call to stop form submission
    // so we need to determine which browser is being used.
    
    // DOM compliant browsers use HTML5 to do this.
    
    if (navigator.userAgent.match(/msie/i))
    {
        $("form[name=upload] input").each(function() {
            if ($(this).val() == "")
            {
                var target, errmsg;
                switch ($(this).attr("name"))
                {
                    case "first_name":
                        errmsg += "Please enter your name.\r\n";
                        break;
                    case "email":
                        errmsg += "Please enter your email address.\r\n";
                        break;
                    case "telephone":
                        errmsg += "Please enter a contact number.\r\n";
                        break;
                    case "comments":
                        errmsg += "Please tell us why you are the fun, energetic person that we are looking for.\r\n";
                        break;
                    case "upload":
                        errmsg += "Please upload your CV so that we can review it.";
                        break;
                }
                event.returnValue = false;
                alert(errmsg);
            }
        });
        }
    });
    

これがお役に立てば幸いです

于 2013-02-28T14:13:13.590 に答える
0

したがって、最終的には簡単な方法でスクリプトブロックを条件付きステートメントで囲みました。

<!--[if IE]>
<script type="text/javascript">
    // Do jquery validation here...
</script>
<![endif]-->
于 2013-03-11T07:58:56.887 に答える