Остановить отправку формы при нажатии кнопки html с включенным onserverclick в веб-приложении asp.net

У меня есть кнопка в приложении asp.net, которое отправляет форму.

    <input type="submit" id="sumbit" value="Sign up" runat="server" 
     onserverclick="sumbit_ServerClick2" class="submitbutton"/>

У меня есть функция javascript, которая возвращает true и false. Как предотвратить отправку формы, если функция javascript возвращает false. Я не могу получить доступ к тегу формы, так как я использую мастер-страницу, а весь contentplacedholder заключен в форму runat="server".


person thunderbird    schedule 12.05.2013    source источник
comment
Выполняет ли javascript какую-то проверку? если это так, изучите элементы управления проверкой, чтобы предотвратить обратную передачу.   -  person fnostro    schedule 13.05.2013


Ответы (3)


Предполагая, что ваша функция называется yourJsFunction, я думаю, вы можете просто использовать onclick="return !!yourJsFunction();" для элемента ввода, например так:

<input type="submit" id="sumbit" value="Sign up" runat="server" onclick="return !!yourJsFunction();"
 onserverclick="sumbit_ServerClick2" class="submitbutton"/>

Используйте !! перед вызовом функции, чтобы принудительно использовать логическое значение.

--

Для кнопки ASP.NET используйте onClientClick="return !!yourJsFunction();".

Подробнее читайте здесь.

person JAM    schedule 12.05.2013
comment
это html-кнопка. onclientclick не является допустимым атрибутом. - person thunderbird; 13.05.2013
comment
Спасибо @thunderbird, теперь увидел. Обновил ответ :) - person JAM; 13.05.2013
comment
я уже пробовал это, но это не сработало, но то, что предложил @NETRICITY, сработало onclick="if (!yourFunction()) return false;" - person thunderbird; 13.05.2013
comment
Странно, вы пробовали return !!yourFunction(), что просто задает логическое значение. - person JAM; 13.05.2013

Используйте атрибут onclick для проверки возвращаемого значения вашей JS-функции:

<input type="submit" id="sumbit" value="Sign up" runat="server" 
     onserverclick="sumbit_ServerClick2" class="submitbutton" 
     onclick="if (!yourFunction()) return false;" />
person Netricity    schedule 12.05.2013

Установите тип кнопки на «кнопку» (по умолчанию для отправки), это отключит отправку формы и будет полагаться на __doPostBack() для обработки подключения.

<button id="MyButton" runat="server" type="button" onserverclick="MyButton_Click">Submit</button>
person Skowronek    schedule 04.07.2013