将 Jquery UI 对话框按钮更改为表单提交按钮
Posted
技术标签:
【中文标题】将 Jquery UI 对话框按钮更改为表单提交按钮【英文标题】:Changing Jquery UI Dialog Button to a form submit button 【发布时间】:2018-10-14 09:46:41 【问题描述】:我正在尝试使用其中一个 Jquery-ui 对话框按钮作为表单提交按钮。我想使用提交按钮,因为它会触发 html5 的表单验证,而 form.submit() 不会。 目前,我正在使用隐藏的提交按钮并使用点击触发器来提交表单,但如果我能让它工作起来会更整洁。
我可以毫无问题地将按钮更改为submit
类型,但我似乎无法将form
添加到属性中
由于按钮不在表单标签内,我无法正确提交
期待:
<button type="submit" form='createUser' id="submit-button" everythingelse="works" foo="bar" class="ui-button ui-corner-all ui-widget">submit</button>
结果:
<button type="submit" id="submit-button" everythingelse="works" foo="bar" class="ui-button ui-corner-all ui-widget">submit</button>
我可以为按钮设置各种随机的东西,但由于某种原因它不需要form
,我就是不明白为什么。
我读过一篇博客here,似乎form
曾经在以前版本的jquery-ui 中工作,但它不再工作了。
测试代码:
jsfiddle 链接:https://jsfiddle.net/s5cjk3wr/
html:
<div id="dialog-form" title="Create new user">
<form id='createUser'>
<fieldset>
<label for="name">Name</label>
<input type="text" name="name" id="name" value="Jane Smith" class="text ui-widget-content ui-corner-all">
<label for="email">Email</label>
<input type="text" name="email" id="email" value="jane@smith.com" class="text ui-widget-content ui-corner-all">
<label for="password">Password</label>
<input type="password" name="password" id="password" value="xxxxxxx" class="text ui-widget-content ui-corner-all">
<input type="submit" tabindex="-1" style="position:absolute; top:-1000px">
</fieldset>
</form>
</div>
<button id="create-user">Create new user</button>
$( function()
dialog = $( "#dialog-form" ).dialog(
autoOpen: false,
height: 400,
width: 350,
modal: true,
buttons:
"Create an account":
text:"submit",
id: "submit-button",
type: "submit",
form: "createUser",
everythingElse: "works",
foo: "bar"
,
Cancel: function()
dialog.dialog( "close" );
);
form = dialog.find( "form" ).on( "submit", function( event )
event.preventDefault();
);
$( "#create-user" ).button().on( "click", function()
dialog.dialog( "open" );
);
);
css
label, input display:block;
input.text margin-bottom:12px; width:95%; padding: .4em;
fieldset padding:0; border:0; margin-top:25px;
h1 font-size: 1.2em; margin: .6em 0;
div#users-contain width: 350px; margin: 20px 0;
div#users-contain table margin: 1em 0; border-collapse: collapse; width: 100%;
div#users-contain table td, div#users-contain table th border: 1px solid #eee; padding: .6em 10px; text-align: left;
.ui-dialog .ui-state-error padding: .3em;
.validateTips border: 1px solid transparent; padding: 0.3em;
【问题讨论】:
form.submit()
努力完成这项工作
【参考方案1】:
你为什么不附加点击时会提交表单的功能,像这样。
buttons:
"Create an account": function()$('#createUser').submit(),
Cancel: function()
dialog.dialog( "close" );
【讨论】:
这样做会绕过像输入required
这样的html表单验证
您可以在提交之前在该函数中添加自己的验证。
谢谢,但实际上我更感兴趣的是了解为什么这不起作用以及是否有解决方案可以使这项工作发挥作用以上是关于将 Jquery UI 对话框按钮更改为表单提交按钮的主要内容,如果未能解决你的问题,请参考以下文章
将 jquery UI 对话标题栏 HTML 从 span 更改为 H2