2

スクリプトの確認に問題があります。標準では、お問い合わせフォームを非表示にして確認メッセージを表示するように設定されていますが、すべてのブラウザで機能するわけではありません。いくつかのテストの後、訪問者の約 40% であるほとんどの IE バージョンでは機能しないことがわかりました。

hide-and-show-msg を「thankyou.html」に置き換えるにはどうすればよいですか? ほとんどのIEはフォームを非表示にできますが、確認メッセージを表示できないため、これはうまくいくと思います。「ヘッダー」のコードは現在次のとおりです。

<script src="php/js/jquery.validate.js"></script>
<script src="php/js/jquery.placeholder.js"></script>
<script src="php/js/jquery.form.js"></script>
<script>
$(function(){
$('#contact').validate({
submitHandler: function(form) {
    $(form).ajaxSubmit({
    url: 'thankyou.php',
    success: function() {
    $('#contact').hide();
    $('#contact-form').append("<p class='thanks'>Thank you! The message was sent.</center></p>")
    }
    });
    }
});         
});
</script>
4

3 に答える 3

1

解決しました。

http://groups.google.com/group/jquery-en/browse_thread/thread/58a9cbc1068d28c0/eb4bedb2cc36b126?pli=1を読む

条件付きスクリプトを追加しました

<head>
<!--[if IE]>
<script >
document.createElement("section"); 
</script >
<![endif]-->

http://plungjan.name/test/testform_validation.html

あなたがする必要があるのは、IE によって理解される要素に追加することです。

条件付きスクリプトが必要ない場合は、ページの最後に div を追加し、代わりに次のように追加します: http://plungjan.name/test/testformvalidation.html


その他の問題:私は手に入れました

Webpage error details

User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.1)
Timestamp: Tue, 17 May 2011 13:15:29 UTC


Message: Unexpected call to method or property access.
Line: 5569
Char: 5
Code: 0
URI: http://code.jquery.com/jquery-1.6.1.js

最終的にはサポートされていないようです

最終的に追加catch(e) {}したとき - エラーはなくなりました

resolveWith: function( context, args ) {
  if ( !cancelled && !fired && !firing ) {
    // make sure args are available (#8421)
    args = args || [];
    firing = 1;
    try {
      while( callbacks[ 0 ] ) {
        callbacks.shift().apply( context, args );
      }
    }
    catch(e) { /* ADDED BY ME */ }
    finally {
      fired = [ context, args ];
      firing = 0;
    }
  }
  return this;
},
于 2011-05-17T12:46:47.410 に答える
0

フォーム アクションとして thankyou.php を設定し、jQuery validate() を使用して、フォーム フィールドが入力されたことを確認します。

<script>
    $(function(){
       $('#contact').validate({
            // Validate your form fields here
       });
    });
</script>
...
<form id="contact" action="thankyou.php" method="post">

thankyou.php を使用してフォームの送信を処理し、ユーザーを thankyou.html にリダイレクトします。

<?php
header("Location: thankyou.html");
?>

このアプローチにより、AJAX 呼び出しとフォームの非表示が不要になります。

于 2011-05-17T13:01:43.413 に答える
0

交換

$('#contact').hide();     $('#contact-form').append("<p class='thanks'>Thank you! The message was sent.</center></p>")

window.location.href="thankyou.html";

簡単な解決策。もちろん、このコードでは相対パスを使用しています。「thankyou.html」をそのページの実際の場所に置き換えてください。

また、 と書かれた部分を取り出します</center>。そのコードに終了タグを追加するべきではありません。中心のオブジェクトは既に正しく閉じられているはずです。IE で表示されないのは、これが原因かもしれません。HTML コードが間違っています。

編集:はい、そう思うなら、jQueryを使用できますが$(window.location).attr('href', 'thankyou.html'); 、これは私の元のソリューションには何のメリットもありません。

于 2011-05-17T12:42:20.910 に答える