Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery submit()事件中的jQuery UI对话框(我做得对吗?)_Jquery_Jquery Ui_Submit_Jquery Ui Dialog - Fatal编程技术网

jQuery submit()事件中的jQuery UI对话框(我做得对吗?)

jQuery submit()事件中的jQuery UI对话框(我做得对吗?),jquery,jquery-ui,submit,jquery-ui-dialog,Jquery,Jquery Ui,Submit,Jquery Ui Dialog,我正在制作一个表单,在提交时检查用户名输入字段是否已填写。如果是,则会提示一个jqueryui对话框。如果按下“是”,则答案将发送给变量userOKWithIt,然后与对submit()函数的第二次调用一起使用 我这样做是因为我不希望用户能够使用Firebug控制台提交用户名为空的表单,例如(在其中写入('form).submit()) 这样做对吗?我觉得我错过了一些重要的东西。我不喜欢全局变量存储用户答案的想法。 代码如下: var $dialog = $('<div></d

我正在制作一个表单,在提交时检查用户名输入字段是否已填写。如果是,则会提示一个jqueryui对话框。如果按下“是”,则答案将发送给变量userOKWithIt,然后与对submit()函数的第二次调用一起使用

我这样做是因为我不希望用户能够使用Firebug控制台提交用户名为空的表单,例如(在其中写入('form).submit()

这样做对吗?我觉得我错过了一些重要的东西。我不喜欢全局变量存储用户答案的想法。 代码如下:

var $dialog = $('<div></div>')
.html('<p>Are you sure you want to continue?</p>')
.dialog({
autoOpen: false,
resizable: false,
title: 'Continue anyway?',
buttons: {
    "Yes": function() {
        $( this ).dialog( "close" );
        userOkWithIt = true;
        $('form').submit();
    },
    No: function() {
        $( this ).dialog( "close" );
    }
}
});

var userOkWithIt = false;
$('form').submit(function(){    
if(!$('input[name="user_name"]').val()){
    //Don't submit because there is no user name written
    return false;
}else{
    $dialog.dialog('open');
    if(userOkWithIt){
        return true;
    }
}
});
var$dialog=$(“”)
.html(“确实要继续吗?

”) .对话({ 自动打开:错误, 可调整大小:false, 标题:“是否继续?”, 按钮:{ “是”:函数(){ $(此).dialog(“关闭”); userOkWithIt=true; $('form').submit(); }, 否:函数(){ $(此).dialog(“关闭”); } } }); var userOkWithIt=false; $('form').submit(函数(){ if(!$('input[name=“user_name”]').val(){ //不提交,因为没有写入用户名 返回false; }否则{ $dialog.dialog('open'); if(userOkWithIt){ 返回true; } } });
老实说,我对你的目标有点困惑;你真的需要决定你想要保护多少免受那些受过教育的js程序员的伤害,他们想要以一种你不想要的方式提交你的表单


编辑:此外,您应该查看HTML5所需的输入:

最好的办法可能是(我能想到的)在用户说“是”时解除提交事件的绑定。这样,表单将在不使用任何全局布尔值的情况下提交。它还允许您简化提交事件处理程序,要求用户确认,然后返回false

现在,如果您只想将userOkWithIt变量从全局范围中取出,您可以使用closure来实现这一点


下面是一些未经测试的示例代码。>>>>var yes函数;>>yesFunction();>函数(){>var userOkWithIt=false;>yesFunction=function(){>userOkWithIt=true;>}如果禁用JavaScript,用户可能可以提交表单。或者,他们可以解除绑定的
submit
事件的绑定。如果他们足够精明,愿意这样做,他们就可以提交表单。@AndrewWhitaker这不是“保护”的做法用JavaScript提交,我理解对了吗?你肯定可以这样做,但记住它总是可以被破坏的。确保你的服务器也进行了重要的验证。是的,谢谢你的解释。所以在jQuery中,没有人试图“保护”他们的提交(如果我们不计算PHP验证的话)?我不明白你的问题。请你再说一遍好吗?我的意思是,据我所知,使用jQuery的验证不如服务器端验证重要,对吗?正确。我不在乎你写什么;如果我想提交表单,我就去。服务器端验证是为了安全,等等。客户端验证是为了安全一个漂亮的用户界面和用户便利性。我编辑了我的答案,加入了HTML5所需输入的链接。
>>> var yesFunction; <<<

var $dialog = $('<div></div>')
    .html('<p>Are you sure you want to continue?</p>')
    .dialog({
        autoOpen: false,
        resizable: false,
        title: 'Continue anyway?',
        buttons: {
            "Yes": function() {
                $( this ).dialog( "close" );

                >>> yesFunction(); <<<

                $('form').submit();
            },
            No: function() {
                $( this ).dialog( "close" );
            }
        }
    });

>>> function() {                   <<<
>>> var userOkWithIt = false;      <<<

$('form').submit(function() {

    >>> yesFunction = function() { <<<
    >>>     userOkWithIt = true;   <<<
    >>> }                          <<<

    if(!$('input[name="user_name"]').val()) {
        //Don't submit because there is no user name written
        return false;
    } else {
        $dialog.dialog('open');
        if(userOkWithIt) {
            return true;
        }
    }
});

>>> }();                           <<<