-2

HTMLボタンをクリックすると生成されるフォームがあります。

ここにコードがあります。

<html>
  <head>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script> 
  </head>       
  <script type="text/javascript">
  function myFunction()
  {
    alert("Hello World!");
  }
  function createDoc()
  {
    var w=window.open('','','width=400,height=300');
    w.document.open();w.document.write("<table width=350 height =200 <tr><td align=center>");
    w.document.write("<table width=300 height =200 ><tr><td>");
    w.document.write("<form class='commentform' action='hiii.php' method='GET'>");
    w.document.write("<input type='hidden' name='pcode' value='00214'>");
    w.document.write("<label>Name:</label></td><td><input type='text'id='pname' name='pname'   value=''>");
    w.document.write("</td></tr><tr><td>");
    w.document.write("<label>Email Address:</label></td><td><input type='text' name='pemail' value=''/>");
    w.document.write("</td></tr><tr><td>");
    w.document.write("<label>Mobile number:</label></td><td><input type='text' name='pnumber' value=''/>");
    w.document.write("</td></tr><tr><td align=center>");
    w.document.write("<input type='submit'  onclick='validate()' name='submit' value='Submit'/>");
    w.document.write("</form>");w.document.write("</td></tr>");
    w.document.write("</td></tr></table>");
    w.document.write("</td></tr></table>");
    w.focus();w.document.close();
  }
  function validate(){
    var pname = $('#pname').val();
    alert(pname);
  }
  </script>
  <input type="button" value="Click to Connect" onclick="createDoc()">
</html>

SOをクリックして接続ボタンをクリックすると、フォームを含むポップアップが表示されます。

動的に生成されたフィールドに検証を適用しようとしていますが、フォームが直接送信されたという警告を受け取る代わりに、ここで何が間違っているのか教えてください。

フォームを送信する前に、検証機能にコマンドを送信する必要があります

4

5 に答える 5

1

event.preventDefault()デフォルトのアクションをキャンセルするために使用できます。多分このようなもの。eventをvalidateメソッドに渡すだけです。event.preventDefault()検証関数を呼び出します。

<script type="text/javascript">

$(document).ready(function() {
    createDoc();
}


function createDoc() {
    var w=window.open('','','width=400,height=300');
    w.document.open();w.document.write("<table width=350 height =200 <tr><td align=center>");
    w.document.write("<table width=300 height =200 ><tr><td>");
    w.document.write("<form class='commentform' action='hiii.php' method='GET'>");
    w.document.write("<input type='hidden' name='pcode' value='00214'>");
    w.document.write("<label>Name:</label></td><td><input type='text'id='pname' name='pname'   value=''>");
    w.document.write("</td></tr><tr><td>");
    w.document.write("<label>Email Address:</label></td><td><input type='text' name='pemail' value=''/>");
    w.document.write("</td></tr><tr><td>");
    w.document.write("<label>Mobile number:</label></td><td><input type='text' name='pnumber' value=''/>");
    w.document.write("</td></tr><tr><td align=center>");
    w.document.write("<input type='submit'  onclick='validate(event)' name='submit' value='Submit'/>");
    w.document.write("</form>");w.document.write("</td></tr>");
    w.document.write("</td></tr></table>");
    w.document.write("</td></tr></table>");
    w.focus();w.document.close();

}

function validate(e) {
e.preventDefault();

var pname = $('#pname').val();
alert(pname);
}

</script>
于 2013-05-24T07:30:07.513 に答える
0

次のような新しいウィンドウを開くため、テーブルを作成する前にスクリプトも含めないでください。

var w=window.open('','','width=400,height=300');
w.open();
w.document.write("<head> <script type='text/javascript'>
function validate(){
var pname = $('#pname').val();
alert(pname);}
</script></head>";
w.document.write("<table width=350 height =200 <tr><td a ...more code here
于 2013-05-24T07:50:49.497 に答える
0

フォームでフォームを送信したくない場合は、

<input type='submit'  onclick='return false; validate();' name='submit' value='Submit'/>

入力を検証し、フォームを送信したい場合は、

$('.commentform').submit();
于 2013-05-24T07:33:30.953 に答える
0

フォーム送信ボタンは設計どおりに実行されているため、検証を実行するためにデフォルトの動作を停止し、検証が成功した後にその関数が送信プロセスを続行できるようにする必要があります。

jQuery を使用した event.preventDefault() などのフォーム防止メソッドを使用して実験することもできますが、フォームの送信を停止する機能が既に付属している、他の開発者が開発した jQuery ライブラリを実際に利用する必要があります。

于 2013-05-24T07:29:37.953 に答える
0
w.document.write("<input type='submit'  onclick='javascript: return window.opener.validate( event, window.document );' name='submit' value='Submit'/>");

onclick='javascript: return window.opener.validate( event, window.document );'

function validate(e, w) {
    var pname = $('#pname', w).val();
    alert(pname);
    e.preventDefault();
    return false;
}

上記のコードを置き換えてください。うまくいくと思います。

于 2013-05-24T08:00:19.153 に答える