У меня есть страница aspx, которая занимает много времени, чтобы отправлять сообщения из-за кодов toomany и соединения db. Это не проблема. Мне нужно отключить кнопку сообщения, когда пользователь нажимает на нее, что я могу сделать. Вторая вещь, которую я хочу выполнить, - это изменить значение кнопки для "Пожалуйста, подождите...". Для этого я использую настройку, чтобы через каждые 1 секунду к ней добавлялась точка. Но когда я запускаю код, я получаю InternalError: слишком много рекурсии?
Пожалуйста, помогите моему коду в следующем.
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Submit" OnClientClick="return disable();" />
JS
var m = "Please Wait";
function disable() {
try {
$("input[type=submit]").attr("disabled", "disabled");
setTimeout(showmsg(), 5000);
} catch (e) {
alert(e);
}
return true;
}
function showmsg() {
if (m.length > 15) {
m = "Please Wait";
}
m = m + ".";
$("<%=Button1.ClientID %>").val(m);
setTimeout(showmsg(), 1000);
}
Вы не передаете showmsg как функцию, но выполняете его! Заменить все
setTimeout (showmsg() ,....) to
setTimeout (showmsg ,.....)
Попробуй это
setTimeout(showmsg, 5000);
и дайте мне знать
setTimeout(showmsg, 1000);
и неsetTimeout(showmsg(), 1000);
-setTimeout()
ожидает функцию (или JS в строке) в качестве аргумента, а не возвращаемое значение функции (если только возвращаемое значение не является функцией)