我只是想找到一种方法在jquery中创建一个确认对话框来代替javascript中的默认确认功能。我有一个确认对话框,用于决定是否要在表单中没有给定值的情况下继续。整个计划在这里:
让我头疼的按钮代码看起来像这样,但它可能不是按钮代码。我只是在学习jquery:
buttons: {
'Yes': function() {
document.getElementById("clicked").value = "true";
creturn = true;
$(this).dialog('close');
},
'No': function() {
document.getElementById("clicked").value = "false";
creturn = false;
$(this).dialog('close');
}
}
除了确认对话框外,此程序工作正常。我已经尝试设置一个具有全局范围(creturn)的变量,以及一个隐藏输入(clicked.value)中的DOM元素,这样当对话框关闭时我可以判断选择了哪个按钮。这两个值都已设置,但直到在onclick事件所在的表单“发送”按钮之后才会被设置为第二次:
<button type=submit name=clicked value=true onclick='return chkreq("cfbform")'>Send</button>
行为是,如果您输入电子邮件地址而没有名称,并点击发送按钮,则会弹出确认对话框。如果选择“是”,则对话框将关闭,但不会提交表单。如果再次单击“发送”按钮,对话框将再次弹出,立即关闭,并提交表单。显然我错过了什么。
感谢您的任何见解。
答案 0 :(得分:0)
使用提交按钮并将点击事件绑定到它们并处理jQuery中的单击可能会导致jquery被调用等问题,然后由于提交而调用post pack。 我建议将按钮的类型从“提交”更改为“按钮”,然后尝试一下。
答案 1 :(得分:0)
我会将按钮从type = submit切换到type = button(我们也可以放弃返回)
<button type=button name=clicked value=true onclick='chkreq("cfbform")'>Send</button>
然后在通过验证时使用jQuery提交表单。
function chkreq(fid) {
// both values are set return true
if (document.getElementById(fid).elements.namedItem("name").value.length > 0 &&
document.getElementById(fid).elements.namedItem("email").value.length > 0) {
document.getElementById("clicked").value = "true";
$('#' + fid).submit();
}
...
}
和
buttons: {
'Yes': function() {
document.getElementById("clicked").value = "true";
$('#' + fid).submit();
$(this).dialog('close');
},
'No': function() {
document.getElementById("clicked").value = "false";
creturn = false;
$(this).dialog('close');
}
}
有关详细信息,请参阅https://api.jquery.com/submit/
该页面上使用的另一个选项是绑定到submit事件。通过弹出窗口进行覆盖验证,我认为上面的代码将更容易实现。