-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>

所以点击点击连接按钮我得到一个包含表单的弹出窗口。

我正在尝试对动态生成的字段应用验证,但没有收到警报,而是直接提交了表单,请告诉我我在这里做错了什么。

我希望命令应该在提交表单之前进入我的验证功能

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

表单提交按钮仍在按设计执行,因此您确实需要停止该默认行为以运行验证并让该功能在成功验证后继续提交过程。

它可以尝试使用 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 回答
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 回答