- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们在单击按钮时调用 JavaScript 函数,并在该函数的第一行禁用该按钮。 (我们需要禁用该按钮,以便用户不会多次按下同一个按钮)
示例代码如下:
<button class="btn btn-primary DialogSaveBtn" onclick="SavePatientExamination();">Save changes</button>
function SavePatientMedicine()
{
$(".DialogSaveBtn").attr("disabled", "disabled");
var patId = $("#PatId").val();
var appId = $("#PatAppId").val();
var visitNo = $("#PatVisitNo").val();
var valid = true;
var data = new Array();
var tablecount = 0;
$("#MedListTbl .DataRow").each(function () {
debugger;
if ($(this).find(".MedDays").val() == "" || $(this).find(".MedDays").val() <= 0 ||parseInt($(this).find(".MedDays").val())!= parseFloat($(this).find(".MedDays").val()))
{
alert("please enter valid 'Days' for medicines.");
valid = false;
return false;
}
tablecount = tablecount + 1;
var row = {
"iPMID": $(this).find(".RecId").val(),
"PatId": patId,
"AppId": appId,
"MedicineId": $(this).find(".MedId").val(),
};
data.push(row);
});
if (tablecount > 0 && valid) {
$.ajax({
url: '@Url.Action("SavePatientMedicine","OPD")',
type: "POST",
dataType: 'json',
contentType: 'application/json;',
data: JSON.stringify(data),
success: function (msg) {
if (msg == true) {
toastr.success('Record Added Successfully', 'Medicine');
var appId = $("#PatAppId").val();
$('#OPDMedDialog').modal('hide');
$(".DialogSaveBtn").removeAttr("disabled");
} else {
alert("Unable to save data");
$(".DialogSaveBtn").removeAttr("disabled");
}
},
error: function () {
alert("an error occured while saving data");
$(".DialogSaveBtn").removeAttr("disabled");
}
});
}
else {
// $(".DialogSaveBtn").removeAttr("disabled");
}
}
我们面临的问题是,如果用户同时单击该按钮,该函数会在按钮实际禁用之前被调用两次。
感谢任何帮助..
最佳答案
您没有阻止按钮的默认行为,因此即使您设置了禁用属性,按钮仍会继续其正常行为。
在此示例中,我添加了一个事件监听器(而不是使用内联 onclick 属性)并阻止按钮的默认行为。然后我设置禁用的属性(不是属性)。检查浏览器的控制台,看看即使双击,“clicked”的 console.log 也只会触发一次。
$(function(){
$(".DialogSaveBtn").on("click",SavePatientMedicine);
function SavePatientMedicine(e){
//prevent the normal button behaviour
e.preventDefault();
//set disabled property (not attr)
$(".DialogSaveBtn").prop("disabled", true);
//...
console.log("clicked");
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button class="btn btn-primary DialogSaveBtn">Save changes</button>
更新:
要将内联事件保留在适当的位置(按照评论中的要求),只需将事件
传递到函数中即可:
function SavePatientMedicine(e){
//prevent the normal button behaviour
e.preventDefault();
//set disabled property (not attr)
$(".DialogSaveBtn").prop("disabled", true);
//...
console.log("clicked");
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button class="btn btn-primary DialogSaveBtn" onclick="SavePatientMedicine(event)">Save changes</button>
关于javascript - javascript 函数属性 setter 中的延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36449475/
你能比较一下属性吗 我想禁用文本框“txtName”。有两种方式 使用javascript,txtName.disabled = true 使用 ASP.NET, 哪种方法更好,为什么? 最佳答案 我
Count 属性 返回一个集合或 Dictionary 对象包含的项目数。只读。 object.Count object 可以是“应用于”列表中列出的任何集合或对
CompareMode 属性 设置并返回在 Dictionary 对象中比较字符串关键字的比较模式。 object.CompareMode[ = compare] 参数
Column 属性 只读属性,返回 TextStream 文件中当前字符位置的列号。 object.Column object 通常是 TextStream 对象的名称。
AvailableSpace 属性 返回指定的驱动器或网络共享对于用户的可用空间大小。 object.AvailableSpace object 应为 Drive 
Attributes 属性 设置或返回文件或文件夹的属性。可读写或只读(与属性有关)。 object.Attributes [= newattributes] 参数 object
AtEndOfStream 属性 如果文件指针位于 TextStream 文件末,则返回 True;否则如果不为只读则返回 False。 object.A
AtEndOfLine 属性 TextStream 文件中,如果文件指针指向行末标记,就返回 True;否则如果不是只读则返回 False。 object.AtEn
RootFolder 属性 返回一个 Folder 对象,表示指定驱动器的根文件夹。只读。 object.RootFolder object 应为 Dr
Path 属性 返回指定文件、文件夹或驱动器的路径。 object.Path object 应为 File、Folder 或 Drive 对象的名称。 说明 对于驱动器,路径不包含根目录。
ParentFolder 属性 返回指定文件或文件夹的父文件夹。只读。 object.ParentFolder object 应为 File 或 Folder 对象的名称。 说明 以下代码
Name 属性 设置或返回指定的文件或文件夹的名称。可读写。 object.Name [= newname] 参数 object 必选项。应为 File 或&
Line 属性 只读属性,返回 TextStream 文件中的当前行号。 object.Line object 通常是 TextStream 对象的名称。 说明 文件刚
Key 属性 在 Dictionary 对象中设置 key。 object.Key(key) = newkey 参数 object 必选项。通常是 Dictionary 
Item 属性 设置或返回 Dictionary 对象中指定的 key 对应的 item,或返回集合中基于指定的 key 的&
IsRootFolder 属性 如果指定的文件夹是根文件夹,返回 True;否则返回 False。 object.IsRootFolder object 应为&n
IsReady 属性 如果指定的驱动器就绪,返回 True;否则返回 False。 object.IsReady object 应为 Drive&nbs
FreeSpace 属性 返回指定的驱动器或网络共享对于用户的可用空间大小。只读。 object.FreeSpace object 应为 Drive 对象的名称。
FileSystem 属性 返回指定的驱动器使用的文件系统的类型。 object.FileSystem object 应为 Drive 对象的名称。 说明 可
Files 属性 返回由指定文件夹中所有 File 对象(包括隐藏文件和系统文件)组成的 Files 集合。 object.Files object&n
我是一名优秀的程序员,十分优秀!