Я видел несколько примеров того, как это сделать, но они, похоже, не работают для меня. Сказав это, я делаю это немного иначе, чем примеры, которые я видел, поэтому я не уверен, что то, что я пытаюсь сделать, возможно.Остановить onclick после onclientclick
У меня есть многострочный asp texbox и onclientclick. Я хочу убедиться (среди прочего), что пользователь не перешел на максимальную длину, прежде чем я отправлю событие onclick. Однако это текстовое поле является частью пользовательского элемента управления, который будет использоваться X раз на странице, поэтому я не могу просто захватить элемент управления из Javascript. Мне нужно отправить идентификатор клиента из кода. Поэтому я добавляю событие OnClientClick на кодовое имя и передаю идентификатор client для этого элемента управления. Интересно, вот почему я получаю результаты, которые получаю.
SaveNoteButton.OnClientClick = string.Format("return BeforeSave('{0}');", NoteTextBox.ClientID);
<asp:Button runat="server" CssClass="casenotes-bluebuttons" ID="SaveNoteButton" Text="Save" OnClick="SaveNoteButton_Click" Enabled="false" />
function BeforeSave(noteCtrl) {
var txt = document.getElementById(noteCtrl);
if (txt.value.length > 500) {
alert("false");
return false;
}
else {
alert("true");
return true;
}
}
Таким образом, теоретически свойство OnClientClick добавляется к кнопке SaveNoteButton. Когда он запускается, он передает NotesTextBox.ClientID, js проверяет длину текстового поля, возвращает true или false, тогда событие OnClick срабатывает в зависимости от возвращаемого значения. Но это не так. Я даже попробовал обернуть вызов метода в оповещении, и метод фактически возвращает то, что я ожидаю, но событие OnClick не срабатывает независимо от возвращаемого значения метода. Я даже попытался удалить вызов метода и hardcoding true, и он все равно не срабатывает. Поэтому я знаю, что возвращаемое значение истинно, и все же нет любви OnClick.
Ok, я был неправ. Это все еще не работает. Теперь, независимо от результата BeforeSave(), происходит событие OnClick. – Jeremy