2013-05-24 5 views
-2

У меня есть форма, которая генерируется при нажатии на кнопку html.Проверка JQuery не работает

Вот код.

<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 on click on Нажмите, чтобы подключиться. Я получаю всплывающее окно, которое содержит форму.

Я пытаюсь применить валидацию для динамически сгенерированных полей, но вместо того, чтобы получать предупреждение, форма отправляется напрямую, пожалуйста, скажите мне, что я могу делать неправильно здесь.

Я хочу, чтобы команда должна прийти к моей функции валидации перед отправкой формы

ответ

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

Пожалуйста, замените вышеуказанный код. Я думаю, это сработает.

+0

pname показывается неопределенным после ввода некоторого значения в поле ввода также – Rohit

+0

@Rohit Пожалуйста, проверьте один раз, я обновил свой код. – som

0

Формы кнопка отправки еще выполняется, как это разработано, чтобы быть, так что вам нужно, чтобы остановить это поведение по умолчанию для вашей проверки для запуска и пусть эта функция продолжит процесс подачи после успешной проверки.

Это может быть эксперимент с методами предотвращения формы, например event.preventDefault() с помощью jQuery, но вы должны действительно использовать библиотеки jQuery, разработанные другими разработчиками, которые уже имеют функцию остановки формы.

1

Вы можете использовать event.preventDefault(), чтобы отменить действие по умолчанию. Может быть, что-то вроде этого. просто передайте метод event. и вызовите 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> 
+1

Как насчет 'onclick = 'validate()''? –

+0

@ Jamie, который тоже сработает! – Amyth

+0

Нет, я имею в виду, что это уже в коде: o –

0

Если вы не хотите форму, чтобы представить используйте форму

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

После подтверждены входы и вы хотите представить используйте форму

$('.commentform').submit(); 
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 
Смежные вопросы