function ValidateField(){
var bAllow= true;
//some checking here
if (bAllow == true && apl.val().trim() == "")
{
showDialog();
showDialog().done(function() {
return true; // wanna return true, but not success
}).fail(function() {
return false; //wanna return false, but not success
});
return false; //stop it to execute to next line
}
return bAllow; //success return }
function showDialog(){
var def = $.Deferred();
var modPop = '<div id="diaCom" title="Information?"><p>something something</p></div>';
$("#diaCom").remove();
$(modPop).appendTo('body');
$("#diaCom").dialog({
resizable: false,
draggable: false,
height:150,
width:300,
modal: true,
buttons: {
"Ok": function() {
def.resolve();
$(this).dialog("close");
},
"Cancel": function() {
def.reject();
$(this).dialog("close");
}
}
});
return def.promise();
}
//on click
if (validateField() == true){
//do something
}else{
//do something
}
嗨,大家好,是否有机会返还value? 我希望通过showDialog()。done()返回true和false,并且对validatefield()函数失败,但是它不能按我想要的方式工作,我无法分配给bAllow,因为我已经拥有一个返回false来保存 对话框执行下一行,有什么想法吗? 还是这样做是正确的?
最新回答
- 2021-1-121 #
- 2021-1-122 #
我已经创建了这个JSFIDDLE并更改了布尔分析,因为它已经崩溃了.谢谢,皮埃尔! 这节省了我很多时间。
javascript:
function confirmation(question) { var defer = $.Deferred(); $('<div></div>') .html(question) .dialog({ autoOpen: true, modal: true, title: 'Confirmation', buttons: { "Yes": function () { defer.resolve("true");//this text 'true' can be anything. But for this usage, it should be true or false. $(this).dialog("close"); }, "No": function () { defer.resolve("false");//this text 'false' can be anything. But for this usage, it should be true or false. $(this).dialog("close"); } }, close: function () { //$(this).remove(); $(this).dialog('destroy').remove() } }); return defer.promise(); }; function onclick(){ var question = "Do you want to start a war?"; confirmation(question).then(function (answer) { console.log(answer); var ansbool = (String(answer) == "true"); if(ansbool){ alert("this is obviously " + ansbool);//TRUE } else { alert("and then there is " + ansbool);//FALSE } }); } $("#item").on('click', onclick);
HTML:
<button id="item">Hello, click me.</button>
- 2021-1-123 #
为什么不使用带有resolve(" false")的拒绝方法.然后,您将能够传递一个对象作为参数。 假设您有多个输入字段集,每个字段都有一个删除按钮:
function confirmation(question,obj) { var defer = $.Deferred(); $('<div></div>') .html(question) .dialog({ autoOpen: true, modal: true, title: 'Confirmation', buttons: { "Oui": function () { defer.resolve(obj);// pass the object to delete to the defer object $(this).dialog("close"); }, "Non": function () { defer.reject();//reject, no need to pass the object $(this).dialog("close"); } }, close: function () { $(this).dialog('destroy').remove() } }); return defer.promise(); } $(document).on("click", ".btn-suppr",function (){// all delete buttons having a class btn-suppr var question = "Are you sure to delete this fieldset ?"; confirmation(question,$(this)).then(function (obj) { obj.parent('fieldset').remove(); // remove the parent fieldset of the delete button if confirmed }); });
相关问题
- 如何区分手动滚动(通过鼠标滚轮/滚动条)和Javascript / jQuery滚动?javascriptjqueryscrollscrollbarmousewheel2021-01-12 01:25
- jquery:JavaScript是多线程的吗?javascriptjquery2021-01-11 23:57
- jquery:在JavaScript中将字符串转换为XML文档javascriptjqueryxmldom2021-01-11 23:27
- javascript:AJAX jQuery每5秒刷新一次divjavascriptphpjqueryajax2021-01-11 22:56
- javascript:jQuery验证动态表单输入上的插件不起作用javascriptjqueryformsjqueryvalidate2021-01-11 22:56
嗯,这可以工作。
您的对话框函数... showDialog()
然后是使用该功能的代码...
对于大多数人来说,这似乎是错误的.但是在某些情况下,您无法不从JQuery Dialog返回。
这基本上将模仿Confirm()函数.但是带有丑陋的代码和漂亮的确认框外观:)
我希望这可以帮助一些人。
EDIT: Bootstrap 3 Solution
我现在正在使用NakuPanda的引导程序库,它确实运行良好.与JQueryUI基本相同,但位于Bootstrap UI中。
并使用它(大致相同的方式)