【发布时间】:2012-07-30 00:28:41
【问题描述】:
我正在制作一个表格,该表格是否填充了USER_NAME输入字段。如果是则提示 jQuery UI 对话框。如果按下“是”,则答案将发送到变量 userOKWithIt,然后用于第二次调用 submit() 函数。
我这样做是因为我不希望用户能够使用 Firebug 控制台提交带有空 user_name 的表单(例如,将 ('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;
}
}
});
【问题讨论】:
-
如果用户禁用JavaScript,用户可能会提交表单。或者,他们可以取消绑定您已绑定的
submit事件。如果他们足够精明,愿意去做,他们就能做到。 -
@AndrewWhitaker 用 JavaScript “保护”提交不是一种做法,我理解对吗?
-
您绝对可以做到,但请记住,它总是可以颠覆。确保您的服务器也进行重要的验证。
-
是的,谢谢你的解释。
标签: jquery jquery-ui submit jquery-ui-dialog