如何使用jqueryui对话框按钮提交表单,

我想使用jqueryui按钮提交表单。 我有一些代码,但它不起作用。 这是代码:

 function findUrls() { var text = document.getElementById("text").value; var source = (text || '').toString(); var urlArray = []; var url; var matchArray; // Regular expression to find FTP, HTTP(S) and email URLs. var regexToken = /\b(http|https)?(:\/\/)?(\S*)\.(\w{2,4})\b/ig; // Iterate through any URLs in the text. if( (regexToken.exec( source )) !== null ) { show_box();// this will show jquery dialog.. return false; } }  

Dialog box text.....Dialog box text....Dialog box text

function show_box(){ $(document).ready(function(){ $( "#dialog" ).dialog({ autoOpen: false, width: 400, buttons: [ { text: "Yes", click: function() { submit_form(); } }, { text: "No", click: function() { $( this ).dialog( "close" ); } }, { text: "Cancel", click: function() { $( this ).dialog( "close" ); } } ] }); $( "#dialog" ).dialog( "open" ); }); } function submi_form(){ var myForm = document.forms['myForm']; var formSubmit = document.getElementById('formSubmit'); formSubmit.onclick = function(){ myForm.submit(); } }

当一个人在文本区域中放置一个链接并提交表单时,jquery对话框会出现三个按钮,我希望当有人单击对话框中的“是”按钮时,表单会自动提交。 一切都很好。 但是,当我单击按钮是,它不起作用。

您的submit_form函数实际上并未尝试提交表单。 它目前在“Click Me”按钮上添加了一个点击事件,如果按下该按钮,则会提交您的表单。

如果要单击对话框的“是”按钮以提交表单,请尝试以下操作:

 function submit_form(){ $('#myForm').submit(); } 

还要确保你的submi_form方法的名称只是一个拼写错误而不是你的实时代码…你错过了一个“t”。

好吧,第一个代码非常纠结,组织得非常糟糕,抱歉说这个。 一些改进的提示:

1:将javascirpt保存到单独的js文件中,尽量避免嵌入代码。 但它并不意味着根本不使用嵌入。 在这种情况下,最好保持它更有条理。

2:确保将load事件调用到需要它的代码中,在你的情况下,在show_box()中使用了文档,这是完全没必要的。

3:函数submi_form()不是从任何地方调用的,所以此时你可以更好地使用document ready来处理click事件

4:findUrls(),抱歉无法得到你想要在这部分完成的任务,所以绕过它。 确保你保持简单,快乐将来临)

试图修复代码尽可能保持你的风格,所以这里我们是http://jsbin.com/idetub/1/edit

并只是javascript供您考虑

 function findUrls() { show_box(); // this will show jquery dialog.. return false; // some broken logic below ... var text = document.getElementById("text").value; var source = (text || '').toString(); var urlArray = []; var url; var matchArray; // Regular expression to find FTP, HTTP(S) and email URLs. var regexToken = /\b(http|https)?(:\/\/)?(\S*)\.(\w{2,4})\b/ig; // Iterate through any URLs in the text. if ((regexToken.exec(source)) !== null) { show_box(); // this will show jquery dialog.. return false; } } function show_box() { //$(document).ready(function(){ // no needs for that $("#dialog").dialog({ autoOpen: false, width: 400, buttons: [{ text: "Yes", click: function () { submit_form(); } }, { text: "No", click: function () { $(this).dialog("close"); } }, { text: "Cancel", click: function () { $(this).dialog("close"); } }] }); $("#dialog").dialog("open"); //}); } $(document).ready(function(){ //function submi_form() { remove this as no accual call for submit_form nowhere var myForm = document.forms['myForm']; var formSubmit = document.getElementById('formSubmit'); formSubmit.onclick = function () { myForm.submit(); }; //} }); 

UPD:是的,看起来你在这里得到了递归逻辑,无法提交表单。

试试这个:

 $("#myForm").submit(function() { var text = $('#text').val; var source = (text || '').toString(); var urlArray = []; var url; var matchArray; // Regular expression to find FTP, HTTP(S) and email URLs. var regexToken = /\b(http|https)?(:\/\/)?(\S*)\.(\w{2,4})\b/ig; // Iterate through any URLs in the text. if ((regexToken.exec(source)) !== null) { show_box();// this will show jquery dialog.. alert('ss'); return false; } return false; });​ 

同时删除onsubmit="return findUrls();" 从表单中添加findUrls()代码在上面的$("#myForm").submit()方法中。 小提琴