Остановить onclick при стрельбе, когда onclientclick является ложным?
Можно ли использовать свойство onclientclick
кнопки для проверки клиента. Если проверка вернет true
, запустите событие onclick
. Если проверка clientside возвращает false
, не onclick
событие onclick
.
Это возможно?
ОБНОВИТЬ:
- Вариант Strict On и .NET для программистов VB6
- Проверка разрешения доступа к файлу / папке
- Формат TimeSpan более 24 часов
- Как заполнить пустой текстовый текст по умолчанию?
- GC.Collect ()
Эти 2 работы:
Stops the form from submitting: OnClientClick="return false;"
Allows the form to submit: OnClientClick="return true;"
Следующие 2 не работают:
// in js script tag function mycheck() { return false; } // in asp:button tag OnClientClick="return mycheck();"
// in js script tag function mycheck() { return true; } // in asp:button tag OnClientClick="return mycheck();"
Он представляет форму оба раза.
Почему это?
- Использовать VB.NET и C # в одном приложении?
- Как написать текстовые значения в файл .txt с помощью vb.net
- Как вы привязываете CollectionContainer к коллекции в модели представления?
- Как создать комбинации элементов из списка в .NET 4.0
- Слушайте нажатие клавиши, когда программа находится в фоновом режиме
- Преобразование кода обработчика событий c # в vb.net
- Нужно ли добавлять @ перед именем SqlParameter?
- Как получить контроль над свойством «String Name»?
Вы хотите добавить return
внутри OnClientClick после вызова функции. В противном случае кнопка будет отсылаться обратно, даже если функция возвращает false.
Конечно. Если вы используете return false
в своем OnClientClick
это предотвратит любую навигацию. Таким образом, вы будете выглядеть так:
Да, вы можете, В вызове функции preventDefault()
использовать preventDefault()
function onclientClickFun(e) { if(!IsValidationSuccess) { e.preventDefault(); } }
ИЛИ
function onclientClickFun(e) { if(!IsValidationSuccess) { return false; } }
На странице сервера создайте кнопку :
var button1 = new Button(); button1.ServerClick += new EventHandler(button1_ServerClick); button1.OnClientClick = SetJsForSaveBtn(); button1.Attributes.Add("UseSubmitBehavior", "false"); panel.Controls.Add(button1 );
// Содержит код сервера
private void saveBtn_ServerClick(object sender, EventArgs e) { //do something if ClientClick returns true }
// Содержит код JS для страницы
LiteralControl js = new LiteralControl(); panel.Controls.Add(js); js.Text =@" "; private string SetJsForSaveBtn() { var jsfunc = @" return CheckValidationOnClient()"; return jsfunc ; }
Я тоже столкнулся с этой проблемой. Не хотелось бы, чтобы OnClientClick = return false на каждой ссылке. С простой страницей просто проще использовать якорь и избегать asp заполнения href внутри для вас.
Однако, это не всегда возможно. Таким образом, простой вывод заключается только в том, чтобы наследовать LinkButton и добавить переменную типа AutoPostBack. если false, то просто переопределите вывод с помощью html или добавьте OnClientClick. Мне не нравятся встроенные tags.
namespace My.WebControls { [ToolboxData("<{0}:LinkButton runat=server ID=btn>"), ParseChildren(true), ToolboxItem(true)] public class LinkButton : System.Web.UI.WebControls.LinkButton { private bool _postback = true; [Bindable(true), Category("Behavior"), DefaultValue(true), Description("Gets or Sets the postback click behavior")] public bool AutoPostBack { get { return _postback; } set { _postback = value; } } protected override void Render(System.Web.UI.HtmlTextWriter writer) { if(!AutoPostBack){ this.OnClientClick = "return false"; } base.Render(writer); } } }
Многие атрибуты должны обрабатываться в ViewState, но в этом случае я думаю, что мы хороши;