有没有Javascript确认的替代方案?

时间:2016-06-22 09:19:38

标签: javascript jquery html confirm

我创建了一个应用程序。在应用程序中我经常使用javascript确认功能。

confirm("Do you want to proceed");

我不喜欢确认的默认用户界面。我想使用自定义确认和更好的UI。

问题:

我有一些自定义确认选项。但如果我将使用它们,我需要更改所有默认确认方法(需要进行大量更改)。

有没有办法在最小的变化中实现这一目标。

喜欢:

window.confrim = function() {
        /*
           What logic I should write which will return the 
           value(true or false) selected by user.
        */

}

我有一个JS文件,导入所有HTML文件。

所以我可以将上面的函数逻辑放在公共JS文件中。

2 个答案:

答案 0 :(得分:5)

自定义 public static void Example() { DataTable dt = new DataTable(); dt.Columns.Add("Signal", typeof(int)); dt.Columns.Add("Date", typeof(DateTime)); dt.Rows.Add(1, DateTime.ParseExact("2015-03-02 11:23:25", "yyyy-MM-dd HH:mm:ss", CultureInfo.CurrentCulture)); dt.Rows.Add(1, DateTime.ParseExact("2015-03-02 18:24:03", "yyyy-MM-dd HH:mm:ss", CultureInfo.CurrentCulture)); dt.Rows.Add(1, DateTime.ParseExact("2015-03-03 05:38:49", "yyyy-MM-dd HH:mm:ss", CultureInfo.CurrentCulture)); dt.Rows.Add(0, DateTime.ParseExact("2015-03-03 08:47:02", "yyyy-MM-dd HH:mm:ss", CultureInfo.CurrentCulture)); dt.Rows.Add(1, DateTime.ParseExact("2015-03-03 14:01:31", "yyyy-MM-dd HH:mm:ss", CultureInfo.CurrentCulture)); dt.Rows.Add(1, DateTime.ParseExact("2015-03-03 21:11:53", "yyyy-MM-dd HH:mm:ss", CultureInfo.CurrentCulture)); dt.Rows.Add(1, DateTime.ParseExact("2015-03-04 09:34:04", "yyyy-MM-dd HH:mm:ss", CultureInfo.CurrentCulture)); dt.Rows.Add(0, DateTime.ParseExact("2015-03-04 15:29:27", "yyyy-MM-dd HH:mm:ss", CultureInfo.CurrentCulture)); dt.Rows.Add(0, DateTime.ParseExact("2015-03-04 19:28:33", "yyyy-MM-dd HH:mm:ss", CultureInfo.CurrentCulture)); 的最大问题是原生 var groups = dt.AsEnumerable().GroupBy(r => (int)r["Signal"]); foreach (var group in groups) { int groupMinutes = 0; var datesDescending = group.OrderByDescending(g => g["Date"]); for (int i = 0; i < datesDescending.Count(); i += 2) { var date1 = (DateTime)datesDescending.ElementAt(i)["Date"]; if (datesDescending.Count() > i + 1) { var date2 = (DateTime)datesDescending.ElementAt(i + 1)["Date"]; var dateOffset = date1.Subtract(date2); groupMinutes += dateOffset.Hours * 60 + dateOffset.Minutes; } else groupMinutes += date1.Hour * 60 + date1.Minute; } Console.WriteLine("Signal: {0}, total minutes: {1}", group.Key, groupMinutes); } } 正在阻止。所以你可以写:

confirm

但是你自己的代码无法做到这一点。相反,您需要创建某种回调。一个例子可能是:

confirm

具体如何实现这一点取决于你 - 我实际上在我的项目中有一个更灵活的版本,我打电话给表格:

if( confirm("Continue?")) {
    doStuff();
}

编写自己的东西很酷的一点是,随着项目的发展,你可以随意扩展它以满足你的需求。

答案 1 :(得分:0)

确认框是浏览器的一部分,而不是DOM。所以,它不可能修改它。您可以尝试自定义确认框,例如http://jqueryui.com/dialog/#modal-confirmation

http://onehackoranother.com/projects/jquery/boxy/