2

3 つのフォーム (以下に示す) があり、2 つのフォームを非表示 (display:none;) に設定し、javascript を使用して各フォームを切り替え、非表示に設定されたフォームを表示に設定し、 Enter キーを押してフォームを送信しようとしても、送信されません。

デフォルトで表示される最初のフォームの場合に送信される唯一のフォーム。

これはie7とie6では機能しますが、ie8では機能しません(図を参照)

jquery を使用してフォームの表示と非表示を切り替えていますが、これは問題になりません。私はさまざまなcssルール(visibility:hiddenなど)を使用してみましたが、それでも同じ問題です。

<a href="" onclick="$('#form1').show();$('#form2').hide();$('#form3').hide();">form1</a>
  <a href="" onclick="$('#form1').hide();$('#form2').show();$('#form3').hide();">form2</a>
  <a href="" onclick="$('#form1').hide();$('#form2').show();$('#form3').hide();">form3</a> 

<div id="form1">
      <form method="get"  action="test1/" >
        <input type="text" name="text1" id="text1" />
        <input type="text" name="text2" id="text2" />
        <input type="text" name="text3" id="text3" />
        <input type="submit" name="submit1"  value="submit1"/>
      </form>
  </div>

<div id="form2" >
<form method="get" action="test2/" style="display:none" >
<input type="text" name="text4" id="text4" />
<input type="text" name="text5" id="text5" />
<input type="text" name="text6" id="text6" />
<input type="submit" name="submit2"  value="submit2"/>
</form>
</div>

<div id="form3" >
  <form method="get" action="test3/" style="display:none" >
      <input type="text" name="text7" id="text7" />
      <input type="text" name="text8" id="text8" />
      <input type="text" name="text9" id="text9" />
      <input type="submit" name="submit3"  value="submit3"/>
  </form>
</div>
4

2 に答える 2

1

申し訳ありませんが、ここでテストする IE 8 はありませんが、回避策として別の CSS プロパティを試すことができます。

<style type="text/css">
.hide {
    position: absolute;
    top: -9999px;
    left: -9999px;
}
</style>

<a href="" onclick="$('#form1').removeClass('hide');$('#form2').addClass('hide');$('#form3').removeClass('hide');">form1</a>
<a href="" onclick="$('#form1').addClass('hide');$('#form2').removeClass('hide');$('#form3').addClass('hide');">form2</a>
<a href="" onclick="$('#form1').addClass('hide');$('#form2').removeClass('hide');$('#form3').addClass('hide');">form3</a>

これにより、 と同じ視覚効果が得られdisplay: none;ます。

于 2009-05-08T21:59:43.883 に答える
0

あなたはjQueryを使用しているようです-おそらく次のようなことをすることができます

$(function() {  // execute when document ready
  $("input").keyup(function(e) {
    if (e.keyCode==13) { // enter 
      var form = $(this).parents("form").get(0); // first <form> tag that is a parent.
      if (form) form.submit();
      return e.preventDefault(); // stop it from activating in other browsers.
    }
  });
});

これにより、Enterキーを押したときに、フォームが送信されることが保証されます。

于 2009-05-08T17:28:02.757 に答える