1

私はこのコード を実行しました: ファイル index.php

<html>
<head>
<title>Jeu de dammes</title>
</head>
<style>
form { margin-left:500px;margin-top:300px;  width:300px }
  </style>
<body>
<form id="formulaire" style="margin-left:100px, padding: 15px" >
<table>
<tr><td><h4> The first player</h4></td>
    <td><input   type="text"   id="premier"></td>
</tr>
<tr><td><h4> The second player</h4></td>
    <td><input   type="text"   id="deuxieme"></td>
</tr>
<tr>
<td></td>
<td>
<button   id="action">Play</button></td>
</tr>
</table>
</form>
<script   src="jquery-1.5.1.js"></script>
<script>

    $(function () {

        $('#action').click(function () {

            var j1= $('#premier').val();
            var j2= $('#deuxieme').val();

            if( j1=="") alert('saisir le nom du premier joueur');
            if( j2=="") alert('saisir le nom du deuxieme joueur');
            if(j2!="" && j1!="") {$(location).attr('href',"http://www.google.com");}
        });

    $('body').css('background-image', 'url(flower2.jpg)').css('background-size', '100%');
    $("#formulaire").css('background-image', 'url(flower.jpg)');
    });
</script>
</body>
</html>

私の問題は、「www.google.com」へのリダイレクトをクリックしても機能しない場合です。

  1. このエラーの原因は何ですか?
  2. どうすれば修正できますか?
4

3 に答える 3

1

バニラ JavaScript が既に行っていることを行うために jQuery を使用する必要はありません。

window.location.href = "http://www.google.com/";

おそらく、フォームを使用していて、リダイレクトする前に送信するため、機能していません。submitイベントをキャッチ:

コードを次のように変更すると、機能します。

$('#formulaire').submit(function(e) {
    var j1 = $('#premier').val();
    var j2 = $('#deuxieme').val();

    if (j1 == "") {
        alert('saisir le nom du premier joueur');
    }

    if (j2 == "") {
        alert('saisir le nom du deuxieme joueur');
    }

    if (j2 && j1) {
        window.location.href = "http://www.google.com";
    }

    e.preventDefault();
});
于 2012-12-08T23:16:53.013 に答える
1

リダイレクトするには、locationグローバル変数を変更するだけです:

location = "http://www.google.com"

通常、セレクターまたはコールバックをjQuery関数に渡すだけであるため、何をしても機能しません$(...)(例:$("#something a").)locationは、JavaScriptによって提供されるグローバル変数です。

于 2012-12-08T23:17:03.460 に答える
0

あなたの

$(location).attr('href',"http://www.google.com");

プレーンなJavascriptで

window.location = "http://www.google.com"

編集:

わかりました、私のせいです、追加の問題がありました。フォームに問題がある場合やリダイレクトを行った場合に false を返さないため、フォームのデフォルトのアクション (POST) が前のナビゲーション window.location を壊します。

コードを少しきれいにして、ページを開いたときにフィールドにフォーカスを追加し、フィールドの 1 つが入力されていないときに、http://fiddle.jshell.net/P3zbb/show/light/にデモを投稿しました。

コード mod はhttp://jsfiddle.net/P3zbb/で確認できます。

于 2012-12-08T23:24:08.740 に答える