如何在第一次关闭对话框时定义的jquery对话框中设置值?

时间:2015-04-21 17:33:13

标签: javascript jquery

我只是想找到一种方法在jquery中创建一个确认对话框来代替javascript中的默认确认功能。我有一个确认对话框,用于决定是否要在表单中没有给定值的情况下继续。整个计划在这里:

http://nowlin.com/testpop.php

让我头疼的按钮代码看起来像这样,但它可能不是按钮代码。我只是在学习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>

行为是,如果您输入电子邮件地址而没有名称,并点击发送按钮,则会弹出确认对话框。如果选择“是”,则对话框将关闭,但不会提交表单。如果再次单击“发送”按钮,对话框将再次弹出,立即关闭,并提交表单。显然我错过了什么。

感谢您的任何见解。

2 个答案:

答案 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事件。通过弹出窗口进行覆盖验证,我认为上面的代码将更容易实现。